Win32 逻辑块预处理器显示不活动
Win32 logic block preprocessor shows inactive
我尝试通过修改预处理器指令上的宏以不同方式使用 visual studio 上的库。但是,#if
指令中的逻辑块向我显示为非活动状态,因为它是注释。这是代码:
#if defined EBML_DLL
#if defined EBML_DLL_EXPORT
#define EBML_DLL_API __declspec(dllexport)
#else // EBML_DLL_EXPORT
#define EBML_DLL_API __declspec(dllimport)
#endif // EBML_DLL_EXPORT
#else // EBML_DLL
#define EBML_DLL_API
#endif // EBML_DLL
问题是 visual studio 显示了 if ebml_dll 块不活动(如注释)中的代码。导致该dll在VS对象浏览器中不显示函数
提示:如果在 #if
定义的 EBML_DLL 行的末尾添加反斜杠,它只会激活 else 块。
旧版本的 VS 中存在关于此的错误,但这只是显示问题。 VS 没有正确读取定义(在你的情况下 EBML_DLL,等等)。
也可能是您在预处理器语句中使用的常量不正确并且缺少字符(通常编译器使用的字符在开头和结尾有下划线)
要真正确定它是哪一个,您可以在预处理器预期采用的分支内添加一个随机字符串,然后查看代码是否编译。
#if defined EBML_DLL
this_should_not_compile //you should get an error on this line
#endif
希望这对您有所帮助...
我尝试通过修改预处理器指令上的宏以不同方式使用 visual studio 上的库。但是,#if
指令中的逻辑块向我显示为非活动状态,因为它是注释。这是代码:
#if defined EBML_DLL
#if defined EBML_DLL_EXPORT
#define EBML_DLL_API __declspec(dllexport)
#else // EBML_DLL_EXPORT
#define EBML_DLL_API __declspec(dllimport)
#endif // EBML_DLL_EXPORT
#else // EBML_DLL
#define EBML_DLL_API
#endif // EBML_DLL
问题是 visual studio 显示了 if ebml_dll 块不活动(如注释)中的代码。导致该dll在VS对象浏览器中不显示函数
提示:如果在 #if
定义的 EBML_DLL 行的末尾添加反斜杠,它只会激活 else 块。
旧版本的 VS 中存在关于此的错误,但这只是显示问题。 VS 没有正确读取定义(在你的情况下 EBML_DLL,等等)。
也可能是您在预处理器语句中使用的常量不正确并且缺少字符(通常编译器使用的字符在开头和结尾有下划线)
要真正确定它是哪一个,您可以在预处理器预期采用的分支内添加一个随机字符串,然后查看代码是否编译。
#if defined EBML_DLL
this_should_not_compile //you should get an error on this line
#endif
希望这对您有所帮助...