如何在VS2008中将#define定义转换为字符串?

时间:2016-11-07 05:16:47

标签: c++ windows visual-studio-2008

说,如果我在VS2008中定义了导出的函数:

#define myExportedFunction fn1

extern "C" __declspec(dllexport) BOOL WINAPIV myExportedFunction(int val)
{
    return val == 2;
}

那么如何从myExportedFunction预处理器定义中创建一个字符串来使用呢?

BOOL(WINAPIV *pfn_myExportedFunction)(int val);

HMODULE hDll = ::LoadLibrary(strMyDllPath);
(FARPROC&)pfn_myExportedFunction = ::GetProcAddress(hDll, myExportedFunction);  //Causes: error C2065: 'fn1' : undeclared identifier

1 个答案:

答案 0 :(得分:3)

只需使用prepocessor运算符:

#define myExportedFunction fn1
#define TO_STR_(X) #X
#define TO_STR(X) TO_STR_(X)

extern "C" __declspec(dllexport) BOOL WINAPIV myExportedFunction(int val)
{
    return val == 2;
}

BOOL(WINAPIV *pfn_myExportedFunction)(int val);

HMODULE hDll = ::LoadLibrary(strMyDllPath);
(FARPROC&)pfn_myExportedFunction = ::GetProcAddress(hDll, TO_STR(myExportedFunction));