MSDN官网的解释,内容全英文:http://msdn.microsoft.com/en-us/library/ee956429.aspx
VC编译器在编译时,会把对象的name和value作为一条记录保存起来。在连接时,连接器会检查这些记录是否匹配。
语法是:
#pragma detect_mismatch( "name", "value"))
注意:
当你链接项目时,如果两个对象有相同的name字段而value字段不一样的时,链接器会抛出Link Error 2038。使用pragma来检测记录的匹配性的目的是,解决被连接在一起的文件中中对象的一致性。name和value都是字符串常量,遵循字符串常量的的转译规则和级联规则。它们大小写敏感,均不能包含逗号,引用,等号和'\0'。
示例:
在这个例子中,创建了两个具有相同版本标识符不同版本标号的文件。
// pragma_directive_detect_mismatch_a.cpp
#pragma detect_mismatch("myLib_version", "9")
int main ()
{
return 0;
}
// pragma_directive_detect_mismatch_b.cpp
#pragma detect_mismatch("myLib_version", "1")
当你把这两个文件放在同一工程里编译链接的话,就会得到Link Error 2038。