最近,我遇到了我的代碼奇怪的行爲:類似於C++對象包含宏URL解釋爲註釋
#define STR(X) #X
#define XSTR(X) STR(X)
#define TEST_SERVER_HTTP http://host.cz/import.php
qDebug() << "Test server: " XSTR(TEST_SERVER_HTTP);
輸出只是「HTTP:」文本。
我已經想通了,URL的「//」部分在這裏被解釋爲C++註釋,將其餘的URL文本切掉。
明顯的解決方法是
#define TEST_SERVER_HTTP http:\/\/host.cz\/import.php
但是我得到(G ++)警告
invalid string literal, ignoring final '\' [enabled by default]
何宏使用,即使編譯後的代碼運行正常。
的問題是:
有一些「正確」的方式在C++中如何引用斜線壓制註釋開始的雙斜槓意思?
是否有一些「規範」的解決方法將URL常量作爲替代對象類宏的值?
而且沒有
#define TEST_SERVER_HTTP "http://host.cz/import.php"
不是在我的代碼的其餘部分給出的理由可以接受的。
*「由於我的其他代碼中給出的原因,不能接受」*。哪個 ? – Jarod42
恐怕這是無法完成的。兩個連續的斜線開始評論,兩個單獨的斜線不能重合。將它們並置會留下空間,並且不能粘貼它們,因爲'//不是有效的標記。 – Quentin
如何定義字符串文字? – AndyG