Какой смысл помещать `ifdef` в первую строку исходного файла? - PullRequest
0 голосов
/ 02 марта 2019

Люди используют ifdef, чтобы контролировать, какая часть кода должна компилироваться или нет.Обычно он ставится после некоторого include some_header, который определяет или отменяет определение вещи в ifdef.Я видел некоторый код (например, lame контрольный пример в MiBench ), где в начале исходного файла есть ifdef, что заставляет компилятор игнорировать весь исходный файлнепосредственно.Может кто-нибудь сказать мне, какой смысл писать такой код?

1 Ответ

0 голосов
/ 02 марта 2019

Файл amiga_mpega.c начинается с #ifdef AMIGA_MPEGA и заканчивается соответствующим #endif.

. Это приводит к тому, что файл выглядит "пустым" для компилятора, если макрос AMIGA_MPEGAне определено.

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

Одна (из разных) ситуаций, где это имеет смыслэто когда вы настраиваете свой проект таким образом, что все файлы C в определенной директории компилируются.Однако в некоторых ситуациях вы не хотите, чтобы в вашем проекте были все файлы C.

Ваш проект может быть написан для работы в разных операционных системах, а некоторые файлы C предназначены только для определенной операционной системы.

Используя переключатель компилятора (-DAMIGA_MPEGA) в вашем Makefile (или любой другой инструмент сборки, который вы используете), вы выбираете, хотите ли вы скомпилировать файл C или нет.Если вы не хотите компилировать файл C, файл C все равно компилируется, но из-за #ifdef файл C кажется компилятору пустым, поэтому фактическое содержимое файла C не включено в вашу программу.

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