Где предопределенные макросы находятся в C? - PullRequest
0 голосов
/ 09 февраля 2020

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

Предопределенные макросы определены в компиляторе или препроцессоре, в котором есть словарь, содержащий предопределенные макросы в исходном коде.

Я имею в виду __FILE__ макрос имеет определение и значение эквивалентности в компиляторе, и определение было сделано в компиляторе, верно?

1 Ответ

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

Препроцессор C , для G CC Версия 9.2.0 , Глава 3.7 (Предопределенные макросы) говорит:

Несколько объектов -подобные макросы предопределены; вы используете их без указания их определений.

и более поздних версий, например

__ LINE __ - этот макрос раскрывается до текущего номера строки ввода, в форме десятичной целочисленной константы. Хотя мы называем его предопределенным макросом, это довольно странный макрос, поскольку его «определение» меняется с каждой новой строкой исходного кода


Это означает, что нет конкретных определений этих макросов в любом месте. , Во время предварительной обработки препроцессор C отслеживает, какой файл он обрабатывает в настоящее время, и соответственно заменяет __FILE__, __LINE__ и другие «специальные» макросы.

...