2017-09-23 68 views
0
int main(int argc, char **argv) { 
    static_assert(false, R"error(This is an error message. You need to 

1. Pick up the phone. 
2. Call GhostBusters. 
3. Run and hide. 

)error"); 
} 

爲什麼不用static_assert打印新行/其他控制序列?

error: static_assert failed "This is an error message. You need to\n\n1. Pick up the phone.\n2. Call GhostBusters.\n3. Run and hide.\n\n" 
    static_assert(false, err); 
    ^   ~~~~~ 
1 error generated. 

有誰知道這些都是 「轉義」 的原因是什麼?它是依賴於編譯器/平臺嗎?標準的一部分?

回答

1

GCC給你你想要的換行符:https://godbolt.org/g/jS7Sgm

確切的表現取決於編譯器。打印轉碼或不轉碼可能最好被描述爲「實施質量」問題。

+0

嘎!好的,將在11分鐘內接受x0謝謝! – sjm324

1

的標準說無非:

所得診斷消息(4.1)應包括字串文本的文本,如果一個被提供,不同之處在於不是在基本源字符集中的字符( 5.3)不需要出現在診斷消息中。

換行符是基本源字符集的一部分,因此它們被要求「出現」。確切地說他們如何出現不是標準控件的問題。

相關問題