Q
逃離的C++
0
A
回答
2
如果?你的編譯器,可向接受C++11標準,你可以使用原始字符串字面量例如像:
std::cout << R"*(<!DOCTYPE html>
<html>
<head>
<title>Title with a backslash \ here
and double " quote</title>)*";
與原始字符串字面量
因此,有人物的那些原始字符串字面量沒有禁止的字符序列的任何序列可能會出現在他們(但你可以定義原始字符串的結束序列)
而且你可以使用#{
和}#
就像我在做MELT macro-strings; MELT是類Lisp domain specific language延長GCC,也可以在它與例如嵌入代碼
(code_chunk hellocount_chk
#{ /* $HELLOCOUNT_CHK chunk */
static int $HELLOCOUNT_CHK#_counter;
$HELLOCOUNT_CHK#_counter++;
$HELLOCOUNT_CHK#_lab:
printf ("Hello World, counted %d\n",
$HELLOCOUNT_CHK#_counter);
if (random() % 4 == 0) goto $HELLOCOUNT_CHK#_lab;
}#)
的#{
和}#
被包圍宏字符串(這些字符序列是不太可能出現在C或C++代碼,除在字符串和註釋)中,用在這樣的宏觀字符串$
起始符號(向上非字母或#
字符)。
使用#{
和}#
不防呆(因爲原始字符串字面量例如),但不夠好:一個合作用戶可以設法避免。
相關問題
- 1. 逃離C#,有點迷惘
- 2. 「逃離」 $
- 3. 逃離'?'在mod_rewrite的
- 4. 逃離preg_replace的+號
- 5. 逃離「。」在preg_replace
- 6. 逃離串
- 7. 「逃離」噩夢
- 8. 逃離&hellip;與BeautifulSoup
- 9. 逃離golang模板
- 10. 逃離正確VBA
- 11. jQuery的模板,逃離 「$ {...}」
- 12. 逃離引號的Java庫
- 13. gpostpro如何「逃離monad」?
- 14. PHP - 逃離長破折號
- 15. 逃離內嵌代碼塊
- 16. 逃離小黃瓜聲明
- 17. 防止Nokogiri逃離角色?
- 18. 逃離PHP字符串
- 19. 如何逃離速度##
- 20. 逃離 - (雙破折號)
- 21. C#StringBuilder的 - 如何逃離這個字符串:
- 22. \ C逃生用C
- 23. 逃生蘇-c
- 24. 防止逃離字符的Coldfusion
- 25. 防止Nokogiri逃離URL中的字符
- 26. 逃離 「這個」 或@中的CoffeeScript
- 27. Grails的派生屬性逃離公式
- 28. MySQL存儲過程的參數逃離
- 29. 逃離大括號的花括號
- 30. 逃離資源包的JavaScript文本
有一點需要注意的是[Digraphs and Trigraphs](http://en.wikipedia.org/wiki/Digraphs_and_trigraphs) – 2013-05-12 11:53:57
原始字符串文字可以包含任何字符序列(不包括無效的Unicode序列),所以沒有獨立的字符序列永遠不會出現在C++源代碼中。您將需要編寫一個簡單的C++詞法分析器(或使用預先寫上如[Boost.Wave(http://www.boost.org/doc/libs/1_53_0/libs/wave/)),然後就使用任何不是字面部分並且不是標識符或操作符的字符序列。 – Mankarse 2013-05-12 12:01:55