Есть ли опция GCC для обработки foo() как foo(void)?

Я создаю компилятор для языка, который выводит GNU C в качестве промежуточного кода. (да, я знаю, что есть лучшие способы сделать IR, но я ленивый, и я все равно переписываю его, чтобы он был хостингом).

В настоящее время, если я создаю функцию без аргументов, мой компилятор производит

bar foo(){/*Implementation here*/}

Что не совпадает с желаемым поведением:

bar foo(void){/*Implementation here*/}

Тем не менее, я бы хотел, чтобы GCC рассматривал первое как второе (в противном случае я должен сделать особый случай в своем коде).

Есть ли флаг для GCC, чтобы сделать это?

1 ответ

Решение

Перебрав довольно объемные варианты, предоставленные gccЯ не нашел ничего подходящего, что вы хотите.

Однако, если вы собираетесь генерировать код на C, я считаю, что вы обязаны генерировать правильный код. gcc Боды прекрасно знают разницу между функцией "нулевого аргумента" и "неопределенным числом аргументов". Итак, я предлагаю укусить пулю и вставить этот специальный случай в ваш код.

Если он правильно структурирован, вам нужно будет внести изменения только в одном месте:-)

Другие вопросы по тегам