Что такое строка токена в c ++? - PullRequest
0 голосов
/ 04 декабря 2018

#define создает макрос, который является ассоциацией идентификатора или параметризованного идентификатора со строкой токена. После определения макроса компилятор может заменить строку токена для каждого вхождения идентификатора в исходном файле.

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

Удивительно, но этот вопрос не был задан напрямую, скорее вопрос о tokenization, tokenizer, tokening и т. Д. Даже при поиске в DuckDuckGo самым близким вопросом был вопрос о кворе:

Что такое строковый токен в c ++?

И для меня не очевидно, будут ли string token и token string синонимами.Так что просто для ясности:

Что такое строка токена в c ++?

1 Ответ

0 голосов
/ 04 декабря 2018

В этом случае строка токена является телом макроса.В

#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; }

Ваша статья дает вам то, что во втором абзаце называется token-string

Аргумент token-string состоит из серии токенов, таких как ключевые слова, константы или полные операторы.Один или несколько символов пробела должны отделять строку токена от идентификатора .Этот пробел не считается частью замещенного текста, а также пробелы, которые следуют за последним маркером текста.

...