Mr. Wonko
Mr. Wonko

Reputation: 730

MSVC 2010 project-wide macro with parameters

I'm trying to create a Visual Studio project for code that contains

DL_EXPORT(void) initlua(void);

So I basically need a macro like

#define DL_EXPORT(retVal) __declspec(dllexport) retVal

Which works, but is OS/Compiler-specific, so I want to put that in the project*. But I can't figure out what to put in Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions (or in the Command Line) to do that. I'd think either of these would work:

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

I'm leaning towards the latter, but neither seems to work - when compiling I get these errors:

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

And compiling with /P to get the preprocessor result explains why: Nothing happened, so the compiler interpreted it as int DL_EXPORT(void) and expects a ;.

What is the right syntax for the definition? Or is there none, as people in this question assumed?

Thanks.

* I'm not using a simple #ifdef-check for MSVC because I'm just trying to create a Visual Studio project for an existing library (lunatic python) with existing build scripts that I don't want to break. Although I could admittedly use #ifndef DL_EXPORT - but I'd still like to know if I'm missing something or if this is just impossible to do in Visual Studio.

Upvotes: 1

Views: 463

Answers (1)

wimh
wimh

Reputation: 15232

I think it should be possible to use /FI on the commandline to specify an include file to include automatically in every source file. In that file you put the #define statements you need.

Upvotes: 3

Related Questions