gcc与其他编译器的头文件是标准的还是不同的?
答案 0 :(得分:3)
它不是很清楚你在问什么,但“标准”头文件只是标准,因为它们(应该)符合C / C ++标准(由管理机构指定,例如ANSI等)
不同的编译器通常通过不同的实现来满足这些标准,至少在标准允许时这样做。
换句话说,您应该只依赖于标准中指定的行为,因为具体实现可能略有不同。
答案 1 :(得分:1)
标准头文件被调用,因为它们被定义为ANSI C / C ++标准的一部分,因此,它们对于符合ANSI标准的所有编译器都是相同的。
答案 2 :(得分:0)
我希望我理解你的问题,但这是我的去处。
与.cpp文件一起创建类的头文件(.h)是您在C ++中执行操作的方式。
对于大多数情况,SomeClass.h将对类进行原型化,SomeClass.cpp将包含该类工作所需的代码。
如果由于某种原因GCC做了一些非常不同的编译,那我就不知道了。我认为对于任何编译器来说都是一样的想法。
答案 3 :(得分:0)
标准库不需要标准库所需的标准文件之外的头文件概念。但是使用#include指定要导入的文件是。这是标准的,以及编译器搜索这些文件的一般顺序。并且,在预处理器的行为被很好地定义的情况下,标准也强制要求避免多重包含的#ifndef BLAH
方法(尽管如我所说,标准没有说明你是否使用它们)。 #pragma once
不是标准,因此使用它需要您自担风险。
答案 4 :(得分:0)
您可能会发现不同编译器套件之间存在细微差别。但更重要的是,您将在不同平台上找到各种库和头文件。例如,GCC经常出现在POSIX系统上,所以每当<pthread.h>
被预定义时,就会发现__GNUC__
是很常见的。这导致了如下的假设代码:
#ifdef __GNUC__
#include <pthread.h>
#else
#include <windows.h>
#endif
如果有疑问,请在使用C ++时使用C++ Standard Library,在使用C时使用C Standard Library。(但继续期望主要由不同的编译器版本引起的一些琐碎的不一致。)
此外,测试您的代码是否在不同的系统上构建和运行。如果它在Windows下使用Visual Studio并在Linux下使用GCC,那么可以肯定的是,将代码移植到其他系统将是直截了当的。