我有包含各种C++项目的visual studio解决方案。为了简单起见,有两个项目。一个用于.lib,另一个用于.exe。这两个项目都使用预编译头文件stdafx.h
。但预编译头文件在项目之间共享。stdafx.cpp中变量的定义
最近有人放置变量的定义里面stdafx.cpp
因为它是项目之间共享我: error LNK2005: "int x" ([email protected]@3HA) already defined in stdafx.obj
所以我的问题是:它是确定把定义为预编译头?(在创建预编译头文件的cpp部分)
我猜想预编译头文件应该只包含符号声明而不包含定义。或者我错了?
通常你不希望在任何*头*定义一个变量。每个包头的头文件都会提取这个定义,然后链接程序就会抛出一个合适的结果。 – user4581301
我建议不要使用预编译头文件,除非构建程序需要很长时间(如分钟)。海事组织,你的程序应该是结构化的,以便一次只修改几个文件。大多数文件不应该改变,因此编译数量会减少;从而缩短构建时间。 –
不要在项目之间共享预编译的标题,除非您可以保证两个项目中的项目编译设置相同并且保持相同 –