我想备份宏值如下。g++... -D_XOPEN_SOURCE=600当前_XOPEN_SOURCE值为600
// xxx.h #define _XOPEN_SOURCE 700 // redefine
个字符但是正如你所知道的,当#undef _XOPEN_SOURCE时,_XOPEN_SOURCE_BACK值将被删除。如何在C中备份#define宏值?
cmssoen21#
在标准C中没有办法这样做,但gcc有一个扩展:
#pragma push_macro("_XOPEN_SOURCE") #undef _XOPEN_SOURCE ... #pragma pop_macro("_XOPEN_SOURCE")
字符串
rekjcdws2#
也许你可以使用一个enum(一个在编译时已知的真实的常量):
enum
#include <stdio.h> #define _XOPEN_SOURCE 600 enum { _XOPEN_SOURCE_BACK = #ifdef _XOPEN_SOURCE // 600 _XOPEN_SOURCE #undef _XOPEN_SOURCE // removed #else 0 #endif }; #define _XOPEN_SOURCE _XOPEN_SOURCE_BACK // redefine int main(void) { printf("%d\n", _XOPEN_SOURCE); return 0; }
字符串输出量:
600
型
2条答案
按热度按时间cmssoen21#
在标准C中没有办法这样做,但gcc有一个扩展:
字符串
rekjcdws2#
也许你可以使用一个
enum
(一个在编译时已知的真实的常量):字符串
输出量:
型