C++ C++;警告:在主文件中使用pragma一次
我在用g++8.3编译程序时遇到问题。我在一个项目中大约有10节课。这些类位于头文件中,它们的完整定义位于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;
.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