【问题标题】:What is a token string in c++?什么是 C++ 中的令牌字符串?
【发布时间】:2019-05-06 06:45:48
【问题描述】:

#define 创建一个宏,它是一个标识符的关联 或参数化标识符带有标记字符串。宏之后 定义后,编译器可以用 token string 代替每个 在源文件中出现标识符。

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

奇怪的是,这个问题并没有直接问,而是问tokenizationtokenizertokening等。即使在DuckDuckGo上搜索,最接近的问题是在quora上提问,

What is a string token in c++?

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

什么是 c++ 中的标记字符串?

【问题讨论】:

  • 编译器没有这样的事情。这就是预处理器的工作。如果你想知道编译器在 preprocessro 运行后会看到什么gcc -E foo.c
  • Quora 链接的答案是由似乎想回答不同问题的人撰写的。
  • 留意托尔金的琴弦。他们是矮个子,脚上有毛。
  • 一(串)环统治他们,一(串)环找到他们,一(串)环将他们全部带入并在黑暗中束缚他们。
  • @Swordfish 那是……珍贵的。

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


【解决方案1】:

在这种情况下,标记字符串是宏体。在

#defined MAKE_MY_FUNC(x) void x(int bar)

void x(int foo) 部分将被视为 令牌字符串,当您使用 MAKE_MY_FUNC 时,就像

MAKE_MY_FUNC(foo){ std::cout << bar; }

然后token string将被替换,代码将被转换为

void foo(int foo){ std::cout << bar; }

您的文章在第二段中为您提供了他们所谓的 token-string

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    相关资源
    最近更新 更多