仅包含一个#include的.cpp文件有什么意义?

时间:2012-07-18 15:48:20

标签: c++ header include

我正在使用第三方库开始工作,在Visual Studio 2010中构建它时,我注意到我多次收到此链接器警告(LNK4221)。我查看了创建链接的目标文件时使用的源代码,发现这些源代码文件的所有实现都位于头文件中。有趣的是,我还注意到该项目包含了相应的.cpp文件,其中包含一个带有实现的标题的#include。

我很好奇 - 这是什么意思,为什么我要使用这种技术?如果.cpp文件没有向项目添加任何值,为什么我不应该删除它们以消除链接器警告?

我尝试搜索类似的问题,但没有找到任何有趣的东西。如果您知道,请链接。

2 个答案:

答案 0 :(得分:2)

单个#include d文件是stdafx.h吗? I.那个案子,你正在处理precompiled headers。正常设置是针对一个.cpp文件,该文件具有“生成预编译头”编译器选项,并且项目中的其余.cpp文件具有“use pch”。

答案 1 :(得分:1)

我正在使用它确保标题至少包含在第一个位置的一个文件中。通过这样做,我确保标题可以自己编译。

为了使链接器不发出警告,可以使用具有非常大的变量的外部变量:

int variable_with_a_name_that_includes_the_file_name_somehow = 42;