如果您的编译器可以接受C++11标准,您可以使用原始字符串文字,例如:
std::cout << R"*(<!DOCTYPE html>
<html>
<head>
<title>Title with a backslash \ here
and double " quote</title>)*";
因此,对于原始字符串文字,这些原始字符串文字中没有禁止的字符序列。任何字符序列都可能出现在其中(但您可以定义原始字符串的结束序列)
你可以像我在MELT 宏字符串#{
中那样使用and ;MELT是一种类似 Lisp 的领域特定语言,用于扩展 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++ 代码中,字符串文字和注释除外),这些宏字符串中的#{
起始符号(最多为非字母或字符)。}#
$
#
使用#{
and}#
并不是万无一失的(例如,因为原始字符串文字),但已经足够好了:合作用户可以设法避免它们。