[英]Example of misuse of std::memory_order::relaxed in C++ Standard [algorithms.parallel.exec/5 in n4713]
[英][cpp.cond]/2 in N4713
N4713 中的 [cpp.cond]/2:
如果標識符當前被定義為宏名稱(也就是說,如果它是預定義的,或者如果它是
#define
預處理指令的主題,而沒有具有相同主題的干預#undef
指令,則定義的宏表達式的計算結果為1
標識符),如果不是,則為0
。
我不明白上面的或上面的。 也就是說,如何在不包含#define
預處理指令的情況下預定義宏名稱?
該實現預定義了一些宏,而用戶無需#define
它們。 可以在 [cpp.predefined] 中找到標准預定義宏名稱的列表。 例如,它包括__FILE__
和__LINE__
。
因為編譯器可以創建宏。 他們一直都在這樣做,而這個聲明是允許他們這樣做的一部分。 事實上,標准要求他們; 該標准要求實現提供大量宏。 其中包括__cplusplus
(C++ 版本)、 __FILE__
FILE__(正在處理的文件的名稱)等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.