c – 在功能之外吞下分号的宏
发布时间:2020-12-16 05:55:41 所属栏目:百科 来源:网络整理
导读:有没有一个成语在功能之外的cpp宏之后强制分号? 函数内部使用的宏的已知解决方案是: #define MACRO(x) do { x * 2; } while(0) 不过说我有一个如下所示的宏: #define DETAIL(warning) _Pragma(#warning)#define WARNING_DISABLE(warning) DETAIL(GCC di
有没有一个成语在功能之外的cpp宏之后强制分号?
函数内部使用的宏的已知解决方案是: #define MACRO(x) do { x * 2; } while(0) 不过说我有一个如下所示的宏: #define DETAIL(warning) _Pragma(#warning) #define WARNING_DISABLE(warning) DETAIL(GCC diagnostic ignore warning) 我可以把那个强制在分析结束之后的分号放在宏中.该声明可以在函数中或外部使用: WARNING_DISABLE("-Wunused-local-typedefs") #include "boost/filesystem.hpp" void foo(const int x) { WARNING_DISABLE("-Wsome-warning") ... } 是否有任何C/C++语法将强制分析器中的分号在文件中的任何一点没有副作用? 编辑:可能的用例: #define MY_CPPUNIT_TEST_SUITE(test_suite_class) WARNING_PUSH /* the declaration of the copy assignment operator has been suppressed */ INTEL_WARNING_DISABLE(2268) /* the declaration of the copy assignment operator has been suppressed */ INTEL_WARNING_DISABLE(2270) /* the declaration of the copy constructor operator has been suppressed */ INTEL_WARNING_DISABLE(2273) CPPUNIT_TEST_SUITE(test_suite_class); WARNING_POP /* force a semi-colon */ UDP_KEYSTONE_DLL_LOCAL struct __udp_keystone_cppunit_test_suite ## __LINE__ {} 解决方法#define DETAIL(warning) _Pragma(#warning) struct X ## __LINE__ {} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |