Есть ли опция GCC для обработки foo() как foo(void)?
Я создаю компилятор для языка, который выводит GNU C в качестве промежуточного кода. (да, я знаю, что есть лучшие способы сделать IR, но я ленивый, и я все равно переписываю его, чтобы он был хостингом).
В настоящее время, если я создаю функцию без аргументов, мой компилятор производит
bar foo(){/*Implementation here*/}
Что не совпадает с желаемым поведением:
bar foo(void){/*Implementation here*/}
Тем не менее, я бы хотел, чтобы GCC рассматривал первое как второе (в противном случае я должен сделать особый случай в своем коде).
Есть ли флаг для GCC, чтобы сделать это?
1 ответ
Перебрав довольно объемные варианты, предоставленные gcc
Я не нашел ничего подходящего, что вы хотите.
Однако, если вы собираетесь генерировать код на C, я считаю, что вы обязаны генерировать правильный код. gcc
Боды прекрасно знают разницу между функцией "нулевого аргумента" и "неопределенным числом аргументов". Итак, я предлагаю укусить пулю и вставить этот специальный случай в ваш код.
Если он правильно структурирован, вам нужно будет внести изменения только в одном месте:-)