默认情况下,如何指定要在编译之前包含的文件

时间:2019-05-09 15:17:52

标签: c++ visual-studio gcc g++

// a.cpp
void foo() {
    uint16_t var_in_a;
}
// b.cpp
void foo() {
    uint16_t var_in_b;
}
// c.cpp
void foo() {
    uint16_t var_in_c;
}

在此示例中,我必须在所有<stdint.h>文件中包括.cpp文件。我想避免这种活动。我想在我的builder / IDE属性中指定此<stdint.h>文件,并使其在每个.cpp文件中包含此文件。

在编译任何.cpp文件时,有没有办法使编译器包括指定的文件?

请给出以下编译工具/ IDE的答案

  • Visual Studio代码
  • 视觉工作室
  • g ++

2 个答案:

答案 0 :(得分:1)

简而言之,不是(通常不适用于每个构建系统),您不能让编译器包括它们依赖的头文件。他们无法知道哪些可能具有您使用的定义或原型。

现在,您可以制作一个包含常用头文件的头文件,但是如果某些cpp文件只需要这些头文件的一个子集,则编译器会做额外的工作,这可能会减慢构建速度。

有人将公用包含包含在预编译的标题中。

您可能会争辩说,最好只在需要的地方包含头文件,而在它们被编译/读取时缩小范围。

答案 1 :(得分:1)

正如评论中提到的那样,您正在搜索一个包含逗号的行。有关详细信息,请参见Include header files using command line option?

Visual Studio具有类似的编译选项:/ FI。官方文档:https://docs.microsoft.com/en-us/cpp/build/reference/fi-name-forced-include-file?view=vs-2019