Создать список макросов препроцессора, определенных компилятором - PullRequest
9 голосов
/ 19 февраля 2012

С помощью gcc и gfortran я могу сгенерировать список макросов препроссора, определенных компилятором, используя (отредактированный для отражения ответа ouah)

gcc -E -dM - < /dev/null

и

gfortran -cpp -E -dM /dev/null

соответственно (по крайней мере в Linux).

Как я могу сделать то же самое с компиляторами Intel icc и ifort? Я знаю, что для ifort эти макросы определены здесь , но я бы хотел сам создать этот список, так как используемые макросы и их значения будут зависеть от используемых опций компилятора. Мне также известно о проекте prepref .

Ответы [ 3 ]

11 голосов
/ 19 февраля 2012

Используйте это с компилятором Intel:

icc -E -dM - < /dev/null

Обратите внимание, что при gcc опция -E также требуется, если вы хотите использовать опцию препроцессора -dM.

3 голосов
/ 16 марта 2012

С компилятором Intel Fortran ifort можно использовать следующее:

ifort -E -fpp /dev/null -dryrun 2>&1 | grep -e -D | cut -c 5-

Похоже, что у ifort нет эквивалентного -dM флага, как у icc, gfortran и gcc do.

1 голос
/ 26 сентября 2014

Для gfortran, помните, что gfortran -E -dM - < /dev/null дает тот же результат, как если бы вы позвонили gcc, что, вероятно, бесполезно. Вы, вероятно, хотите что-то вроде этого ( source ):

gfortran -cpp -E -dM empty.f

Это даст вам меньший список того, что на самом деле предопределяет gfortran. Вы заметите, что результаты, скорее всего, не содержат ничего полезного для определения операционной системы. Как правило, для Фортрана вы должны сами их определить. Смотрите здесь для дополнительной информации. Вы также можете попробовать что-то вроде this , но я немного скептически отношусь к этому решению практически. Кроме того, эта ссылка подразумевает, что когда-то gfortran определял больше, чем сейчас.

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