C++ UNIX 改 Windows 时,预编译中的“@”如何避免
C++ UNIX 改 Windows 时,预编译中的“@”如何处理?本帖最后由 haelue 于 2013-12-17 15:40:01 编辑求教高手,
C++ UNIX 改 Windows 时,预编译中的“@”如何处理?
本帖最后由 haelue 于 2013-12-17 15:40:01 编辑 求教高手,我在编译libxml2时遇到预编译命令:
#if @WITH_TRIO@
我知道C++预编译中加入“@”运算符是UNIX中的编译方式,如果我要在Win7 VC10里面编译,应该怎么修改?
下面的代码都是我要修改的:
#if @WITH_TRIO@
#define WITH_TRIO
#else
#define WITHOUT_TRIO
#endif
#define LIBXML_VERSION @LIBXML_VERSION_NUMBER@
#define LIBXML_VERSION_STRING "@LIBXML_VERSION_NUMBER@"
[解决办法]@@是编译前需要处理的变量吧,应该需要专门的配置工具来解析。例如工具遇到@WITH_TRIO@模式,它会分析用户配置的WITH_TRIO的值是多少,进行替换,举例来说如果@LIBXML_VERSION_NUMBER@为1.2的话,那么替换后得到:
#define LIBXML_VERSION 1.2
#define LIBXML_VERSION_STRING "1.2"
[解决办法]自己写一段代码,在C++预处理前根据@VARNAMES@=VALUES对应关系表将代码中的@VARNAMES@自动替换为VALUES ?
[解决办法]用
grep -r LIBXML_VERSION_NUMBER *
命令在所有文件中搜索LIBXML_VERSION_NUMBER
看能不能找到在哪里定义了LIBXML_VERSION_NUMBER