gcc vs其他编译器中的头文件是标准文件还是不同的文件?C/C++标准中的头文件?
回答
标准头文件被调用,因为它们被定义为ANSI C/C++标准的一部分,所以它们对于所有符合ANSI的编译器都是相同的。
它不是很清楚你在问什么,但是“标准”头文件只是它们(应该)符合C/C++标准(如管理机构规定的标准,例如ANSI等)的标准。 )
不同的编译器通常通过不同的实现来满足这些标准,至少当标准允许他们这样做时。
换句话说,您应该只依赖标准中指定的行为,因为具体的实现可能略有不同。
我希望我理解你的问题,但这里是我的。
与.cpp文件一起创建类的头文件(.h)是如何在C++中执行的操作。
对于大多数情况下,SomeClass.h将对该类进行原型化,而SomeClass.cpp将包含该类工作所需的代码。
如果由于某种原因GCC做了一些非常不同的编译工作,那么我不知道。我认为这对任何编译器都是一样的想法。
标准文件没有规定标准文件所需标准文件之外的标头文件的概念。但使用#include指定要导入的文件是。所以这是标准的,以及编译器搜索这些文件的一般顺序。在标准中规定了用于避免多重包含的方法,因为预处理器的行为已被很好地定义(虽然正如我所说的,标准没有说明你是否使用它们)。尽管如此,#pragma once
不是标准的,因此使用它需要您自担风险。
如果'#ifndef'实际上是由标准授权的话,会很好。特别是“强制”标识符使用的部分......“#ifndef BLAH”不是由标准规定的**。它恰好是解决多重包含问题的真正简单的解决方案,并且基本上被所有程序员采用。 – pmg 2011-05-05 19:34:46
是的,我调整了一下我的措辞。在这种情况下,预处理器的行为是由标准强制的,因此标准的包括守卫将始终工作,但是包括守卫本身并没有被识别,据我所知。 – 2011-05-05 19:39:31
您可能会发现不同编译器套件之间的细微差异。但更重要的是,您可以在不同的平台上找到各种库和头文件。例如,GCC经常在POSIX系统上找到,所以无论何时预先定义__GNUC__
,找到比如说<pthread.h>
都是很常见的。这导致了假设性的代码如下所示:(但仍预计由不同的编译器版本引起的大多是一些琐碎的矛盾)
#ifdef __GNUC__
#include <pthread.h>
#else
#include <windows.h>
#endif
如果有疑问,有利于C++ Standard Library当使用C++和C Standard Library使用C.时
另外,测试您的代码在不同的系统上构建并运行。如果它使用Windows下的Visual Studio和Linux下的GCC,则可以确保将代码移植到其他系统是非常简单的。
- 1. C++标准头文件
- 2. 头文件和标准库
- 3. 预编译标准库头文件 - C++
- 4. 在C++中将新的头文件包含到标准库中
- 5. 的#define __CLIBNS ::的std ::在C标准的头文件,如stdio.h中
- 6. C头文件和源文件的标准结构
- 7. 铿锵声++:标准头文件中的错误
- 8. 标准文件
- 9. C++标准中有多少个头文件?
- 10. 在C++中包含非标准C头文件
- 11. gnu gcc站点上的标准C++库头文件
- 12. C++ 11的标准库是否有前向声明头文件?
- 13. c标准头文件对应的代码在哪里?
- 14. .so文件的标准文件夹
- 15. 主文件中的标准参数
- 16. GCC标准头迷宫
- 17. 标准输入输出包含在头文件
- 18. 包括标准库时未使用预编译头文件
- 19. 包含标准头文件。 string.h或cstring?或两者?
- 20. .gitignore un-ignore .cc文件
- 21. C++标准库中的哪些标头保证包含另一个标头?
- 22. 文件头中的Intellij图标
- 23. Qt无法找到标准标头
- 24. pvrtextool cl不生成标准标头
- 25. 标准库源文件
- 26. MVC文件结构标准
- 27. HTTP文件上传标准?
- 28. 用标准文件处理
- 29. HTTP标头中的文本
- 30. 从目标文件生成头文件
“,所以它们将为符合标准的所有编译器提供相同的最终效果。” – 2011-05-05 19:32:25