MSVC 2010项目范围的宏与参数

时间:2012-11-21 15:05:03

标签: c++ visual-c++

我正在尝试为包含

的代码创建一个Visual Studio项目
DL_EXPORT(void) initlua(void);

所以我基本上需要像

这样的宏
#define DL_EXPORT(retVal) __declspec(dllexport) retVal

哪个有效,但是是OS /编译器特定的,所以我想把它放在项目*中。但我无法弄清楚要放入属性 - > C / C ++ - >预处理器 - >预处理器定义(或在命令行中)来做到这一点。我认为其中任何一个都可行:

DL_EXPORT(retVal) __declspec(dllexport) retVal
DL_EXPORT(retVal)=__declspec(dllexport) retVal

我倾向于后者,但似乎都不起作用 - 编译时我得到这些错误:

error C2061: syntax error : identifier 'initlua'
error C2059: syntax error : ';'
error C2059: syntax error : 'type'

使用/ P进行编译以获得预处理器结果解释了原因:没有发生任何事情,因此编译器将其解释为int DL_EXPORT(void)并期望;

定义的正确语法是什么?或者没有,正如this question中的人所假设的那样?

感谢。

*我没有对MSVC使用简单的#ifdef-check,因为我只是尝试使用现有的构建脚本为现有的库(lunatic python)创建一个Visual Studio项目,我不想破坏它。虽然我可以肯定地使用#ifndef DL_EXPORT - 但我仍然想知道我是否遗漏了某些内容,或者在Visual Studio中这是不可能的。

1 个答案:

答案 0 :(得分:2)

我认为应该可以在命令行上使用/FI来指定要自动包含在每个源文件中的包含文件。在该文件中,您放置了所需的#define语句。