#define创建一个宏,它是标识符的关联 或带有令牌字符串的参数化标识符。 定义后,编译器可以将令牌字符串替换为每个 在源文件中出现标识符。
https://docs.microsoft.com/en-ca/cpp/preprocessor/hash-define-directive-c-cpp?view=vs-2017
令人惊讶的是,并未直接问到问题,而是询问了tokenization
,tokenizer
,tokening
等。即使在DuckDuckGo上进行搜索,最接近的问题还是在定额询问上,>
对于我来说,string token
和token string
是否是同义词并不明显。所以要清楚一点:
什么是C ++中的令牌字符串?
答案 0 :(得分:4)
在这种情况下,令牌字符串是宏主体。在
#defined MAKE_MY_FUNC(x) void x(int bar)
void x(int foo)
部分将被视为令牌字符串,并且当您像这样使用MAKE_MY_FUNC
MAKE_MY_FUNC(foo){ std::cout << bar; }
然后将令牌字符串替换为其中,并将代码转换为
void foo(int foo){ std::cout << bar; }
您的文章为您提供了第二段中的令牌字符串
令牌字符串参数由一系列标记组成,例如关键字,常量或完整语句。一个或多个空格字符必须将令牌字符串与标识符分开。此空白不被视为替代文本的一部分,也不会被视为文本最后一个标记之后的任何空白。