0
例如,假設我有一個宏觀有沒有辦法斷言當前的命名空間?
#define DEFINE_VAL(x) int x
我想斷言宏只在某些命名空間中使用,是有辦法做到這一點?
在另一個詞,我想是這樣的:
#define DEFINE_VAL(x) static_assert(CurrentNamespaceIsXYZ); int x
或者
#define DEFINE_VAL(x) ASSERT_CURRENT_NAMESPACE_IS(XYZ); int x
如何實現/定義CurrentNamespaceIsXYZ或ASSERT_CURRENT_NAMESPACE_IS?
簡短的回答是:沒有。預處理階段通常發生在編譯階段之前,在編譯階段中,名稱空間和其他語言結構實際上被解析。也許你現在可以解釋[你真正的XY問題是什麼](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)? –
您可以#undefine符號在輸入到任何地方不需要的地方。這可能是很多工作。不要使用宏。 –
我修改了這個問題,你能再看一次嗎?謝謝! –