Say we have a macro defined as such
#define VALUE_ENTRY(a, b, c, d, e, f, g) \ case E_##a##e: temp.a##e = d; break;
How does the preprocessor know that the "e" in "temp" should not be expanded? Is it due to a lack ##of an “e”?
##
Also, if temp.a##ebe temp.##a##e?
temp.a##e
temp.##a##e
The preprocessor works with tokens. eBy itself is a token, while ein tempis just a symbol, which is part of a larger token temp. ##only applies to tokens.
e
temp
, . . a ; temp.a##e a e temp.<a><e>, <a> <e> a e.
.
a
temp.<a><e>
<a>
<e>
Source: https://habr.com/ru/post/1685564/More articles:How to check if the mouse moves up or down using JavaScript? - javascriptDeleting rows recursively in a self-regulation table using CTE. How is the process going? - sql-serverIs it possible to define a macro that processes grammar cases? - macrosВ чем разница между ограниченным совпадением и безопасным типом типа в эспрессо? - android-espressoCreate a parser that starts the resulting parser at the output of another parser and monadically joins the results - parsingBuilding a randomized matrix without duplicates, but fixed partial input - matrixФиксированные значения не повторяются по столбцу и строке - matrixHow to extend the administrator to support SQLite databases with login? - databaseR - estimate of missing values - rIs it possible to display (convert?) In unicode hex \ u0092 into a unicode html object in .NET? - c #All Articles