什么是C ++中的令牌字符串?

时间:2018-12-04 19:01:27

标签: c++ string token terminology preprocessor-directive

  

#define创建一个宏,它是标识符的关联   或带有令牌字符串的参数化标识符   定义后,编译器可以将令牌字符串替换为每个   在源文件中出现标识符。

https://docs.microsoft.com/en-ca/cpp/preprocessor/hash-define-directive-c-cpp?view=vs-2017

令人惊讶的是,并未直接问到问题,而是询问了tokenizationtokenizertokening等。即使在DuckDuckGo上进行搜索,最接近的问题还是在定额询问上,

  

What is a string token in c++?

对于我来说,string tokentoken string是否是同义词并不明显。所以要清楚一点:

什么是C ++中的令牌字符串?

1 个答案:

答案 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; }

您的文章为您提供了第二段中的令牌字符串

  

令牌字符串参数由一系列标记组成,例如关键字,常量或完整语句。一个或多个空格字符必须将令牌字符串标识符分开。此空白不被视为替代文本的一部分,也不会被视为文本最后一个标记之后的任何空白。