Что делают эти опции gcc? - PullRequest
       14

Что делают эти опции gcc?

0 голосов
/ 27 ноября 2011

В make-файле, над которым я работаю, gcc используется с параметрами -D XOPEN_SOURCE=500 and -D_BSD_SOURCE. gcc --help не говорит мне, что это такое; быстрый поиск в Google тоже не помог. Я новичок в gcc, кто-то может дать мне подсказку?

Ответы [ 5 ]

4 голосов
/ 27 ноября 2011

Согласно документации GCC ( "3.11 Опции, управляющие препроцессором" ), переключатель -D определяет макросы XOPEN_SOURCE и _BSD_SOURCE со значениями 500 и 1 соответственно , Как будто у вас есть этот код в начале всех исходных файлов, которые вы передаете в GCC:

#define XOPEN_SOURCE 500
#define _BSD_SOURCE 1

Сценарии сборки обычно используют возможность компилятора «вставлять» подобные макросы для «связи» с исходным кодом сведений о целевой платформе (например, версия операционной системы).

"Противоположный" параметр командной строки для -D - -U, что #undef s макрос.

Большинство (если не все) современных компиляторов C / C ++ содержат аналогичные ключи. Например, компиляторы Visual C ++ принимают переключатель компилятора /D , который по сути служит той же цели, что и переключатель -D GCC.


Для дальнейшего использования индекс опции GCC отлично подходит, если вам нужно найти переключатели компилятора для компилятора GCC.

2 голосов
/ 27 ноября 2011

-D используется для установки определений.Скорее всего, исходный код, который вы компилируете, использует эти определения для включения определенных заголовочных файлов.

Думайте о -D как о том же, что и:

#define XOPEN_SOURCE 500
#define _BSD_SOURCE 1

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

1 голос
/ 27 ноября 2011

-D является эквивалентом #define

т.е.

#define XOPEN_SOURCE 500
1 голос
/ 27 ноября 2011

Это ничего не значит для GCC.Это определения, похожие на те, которые вы используете в своих файлах .c, .cpp или .h:

#define XOPEN_SOURCE 500
#define _BSD_SOURCE
1 голос
/ 27 ноября 2011

-D устанавливает определение.Это похоже на добавление файла заголовка, который содержит:

#define XOPEN_SOURCE 500
#define _BSD_SOURCE 1

Затем можно использовать #ifdef _BSD_SOURCE, чтобы включить условную компиляцию определенной части кода.

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