C++ 在什么条件下是C++;标题不可传递?
我刚刚遇到了一种情况,我#包含一个头,我遇到了编译错误,需要我#包含已经包含在原始头中的头 标题包含以下内容:C++ 在什么条件下是C++;标题不可传递?,c++,header-files,C++,Header Files,我刚刚遇到了一种情况,我#包含一个头,我遇到了编译错误,需要我#包含已经包含在原始头中的头 标题包含以下内容: #pragma once #include <atlbase.h> #include <atlcom.h> #include "itestobj.h" extern "C" ITestObj* WINAPI GetTestObj(); #pragma一次 #包括 #包括 #包括“itestobj.h” 外部“C”ITestObj*WINAPI getes
#pragma once
#include <atlbase.h>
#include <atlcom.h>
#include "itestobj.h"
extern "C" ITestObj* WINAPI GetTestObj();
#pragma一次
#包括
#包括
#包括“itestobj.h”
外部“C”ITestObj*WINAPI getestobj();
当我对代码进行了一组与ATL相关的编译错误时,除了上面的标题之外,在C++文件中包含了<代码> ATLBASE.H./COD>和为什么没有像通常情况那样包含这些标题?很可能,这些标题中至少有一个包含了您在文章中显示的文件。由于
#pramga once
告诉编译器只包含它一次,因此它会停止,您不会得到所有声明。也许您需要#include
而不是那些内部文件?将预编译头文件(stdafx.h)放错位置就是这样一个陷阱。必须首先包含它。但这是否仍然意味着我应该从包含中获得atlbase.h
和atlcom.h
,而不是被#pragma once
排除?这实际上取决于您从cpp文件中包含的头文件。