Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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++;标题不可传递?_C++_Header Files - Fatal编程技术网

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>和AtLCOM.H./COD>。
为什么没有像通常情况那样包含这些标题?

很可能,这些标题中至少有一个包含了您在文章中显示的文件。由于
#pramga once
告诉编译器只包含它一次,因此它会停止,您不会得到所有声明。

也许您需要
#include
而不是那些内部文件?将预编译头文件(stdafx.h)放错位置就是这样一个陷阱。必须首先包含它。但这是否仍然意味着我应该从包含中获得
atlbase.h
atlcom.h
,而不是被
#pragma once
排除?这实际上取决于您从cpp文件中包含的头文件。