Предварительная обработка кода C с помощью GCC

У меня есть несколько исходных файлов C, которые необходимо предварительно обработать, чтобы я мог использовать другое приложение для добавления кода инструментария Code Coverage в свой файл. Для этого я использую GCC (я использую его на процессоре LEON2, поэтому он немного изменен, но по сути это GCC 3.4.4) со следующей командной строкой:

sparc-elf-gcc -DUNIT_TEST -I. ../Tested_Code/0_BSW/PKG_CMD/MEMORY.c -E > MEMORY.i

Со стандартным файлом это работает отлично, но в этом программист использовал #ifndef UNIT_TEST close, и независимо от того, что я делаю, код не будет предварительно обработан. Я не понимаю, почему, поскольку я передаю -DUNIT_TEST в GCC, явно определяя его.

Кто-нибудь знает, что может быть причиной этого? Я проверил полученный файл .i и, как и ожидалось, моего кода UNIT_TEST в нем нет, поэтому при его инструментировании я получаю сообщение об ошибке.


person Leo    schedule 27.09.2011    source источник


Ответы (1)


Все, что заключено в #ifndef, будет проанализировано только в том случае, если оно НЕ определено, поэтому вам нужно удалить это определение, чтобы получить весь код, который находится внутри этого блока. GCC не может выдать предварительно обработанную информацию для всех #ifdef и #ifndef, если во время предварительной обработки символы определены/не определены.

person Jesus Ramos    schedule 27.09.2011
comment
Спасибо, Иисус, сразу после того, как я опубликовал это, я понял свою проблему, здесь раннее утро: P, извините, ребята, за трату вашего времени ... это был мой кодер, который использовал ifndef вместо idef ... - person Leo; 27.09.2011
comment
Все в порядке, я посмотрел на код, прежде чем закричать, почему, только чтобы понять, что это глупая ошибка. - person Jesus Ramos; 27.09.2011