Возврат макроса из функции c ++ - PullRequest
1 голос
/ 21 февраля 2020

Итак, у меня есть несколько определений в верхней части моей программы

#define foo bar
#define three 3

et c.

У меня вопрос, если бы у меня была функция, которая должна была бы сказать:

#define foo bar
string returnDef(){
return foo;
}

int main(){
    string foobar = returnDef();
    return 0;
}

Я бы вернул сообщение foo или я бы вернул определение foo bar?

1 Ответ

3 голосов
/ 21 февраля 2020

foo экземпляры в исходном коде будут заменены bar экземплярами даже до компиляции исходного кода. Это называется предварительной обработкой и запускается перед компилятором. Компилятор не увидит оператор типа return foo, вместо этого он увидит return bar.

Поэтому вы возвращаете bar (пусть bar будет то, что вы определили в другом месте) из функции в этом экземпляре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...