Можно ли получить доступ к целевым флагам XC16/gcc из кода?

Я компилирую код для процессоров серии Microchip dspic33, используя компилятор Microchip XC16.

У меня есть код, который используется в нескольких приложениях (то есть он находится в библиотеке кода). Для определенных модулей я хочу убедиться, что определенные флаги компилятора установлены во время компиляции, в идеале с использованием препроцессора. В частности, меня интересует тестирование целевых флагов -mauxflash и -code-in-auxflash.

Есть ли способ проверить параметры компилятора во время компиляции?

Я попытался сбросить все #defines с помощью xc16-gcc -dM -E - AUXFLASH_LENGTH, __AUXFLASH_BASE и __HAS_AUXFLASH), но ничего не связано с целевыми флагами.

1 ответ

Не все флаги влияют на определения CPP, поэтому вы можете быть там SOL. ваше использование -dM -E это лучший способ проверить.

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

  1. -grecord-gcc-switches: здесь записываются все флаги, используемые во время компиляции, для каждого объекта в информации DWARF. тогда у вас может быть скрипт, который проверяет объекты и выдает ошибку, если он был построен без нужного вам флага.
  2. __attribute__((optimize("flags"))): gcc позволяет принудительно устанавливать конкретные флаги для каждой функции.
  3. #pragma GCC optimize ("flags"): gcc позволяет принудительно устанавливать определенные флаги на уровне файлов.
Другие вопросы по тегам