C / C ++标准文件中的头文件?

时间:2011-05-05 08:33:13

标签: c++ c gcc file header

gcc与其他编译器的头文件是标准的还是不同的?

5 个答案:

答案 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,那么可以肯定的是,将代码移植到其他系统将是直截了当的。