Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;警告:在主文件中使用pragma一次_C++ - Fatal编程技术网

C++ C++;警告:在主文件中使用pragma一次

C++ C++;警告:在主文件中使用pragma一次,c++,C++,我在用g++8.3编译程序时遇到问题。我在一个项目中大约有10节课。这些类位于头文件中,它们的完整定义位于.cpp文件中。我以与此代码相同的方式包含这些类: main.cpp: #include "CPerson.h" int main() { CPerson person1(10 , "Peter"); CPerson person2(20 , "James"); person1.Print(); person2.Print(); return 0;

我在用g++8.3编译程序时遇到问题。我在一个项目中大约有10节课。这些类位于头文件中,它们的完整定义位于
.cpp
文件中。我以与此代码相同的方式包含这些类:

main.cpp:

#include "CPerson.h"

int main()
{
    CPerson person1(10 , "Peter");
    CPerson person2(20 , "James");
    person1.Print();
    person2.Print();
    return 0;
}
CPerson.h:

#pragma once
#include <iostream>
#include <string>

using namespace std;

class CPerson{
protected:
    int m_Age;
    string m_Name;
public:
    CPerson( const int age , const char * name ) :
    m_Age(age), m_Name(name){}
    void Print(){
        cout << "Hello Im " << m_Name << " - " << m_Age << "years old" << endl;
    }
};
#pragma一次
#包括
#包括
使用名称空间std;
类CPerson{
受保护的:
int m_年龄;
字符串m_Name;
公众:
CPerson(常量整数,常量字符*名称):
m_年龄(年龄),m_姓名(姓名){}
作废打印(){

您之所以会收到警告,是因为您正在编译一个包含
#pragma once
#pragma once
的文件,它只用于头文件中,而不需要编译头文件;因此会发出警告。解决方案:不编译头文件。

调用编译器时不需要提及.h文件。
g++main.cpp
这就足够了,作为初学者,我不确定你是否应该这么快就怀疑g++有bug。除了@HolyBlackCat之外,还有一个功能。如果你想指定一些头的路径,请使用
-I
选项。例如:
g++-I“some path”main.cpp-o hello.out