是否有一个GCC选项将foo()视为foo(void)?

时间:2013-10-27 11:25:58

标签: c gcc intermediate-code

我正在为一种输出GNU C作为中间代码的语言创建编译器。 (是的,我知道有更好的做IR的方法,但是我很懒,我打算把它重写为自托管)。

目前,如果我创建一个没有参数的函数,我的编译器会生成

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

这与期望的行为不同:

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

但是,我希望GCC将前者视为后者(否则我必须在我的代码中做出特殊情况)。

海湾合作委员会是否有这样做的标志?

1 个答案:

答案 0 :(得分:2)

通过gcc提供的相当多的选项进行搜索后,我发现任何接近你想要的东西。

但是,如果您要生成C代码,我的信念是,您有责任生成正确的代码。 gcc人们非常清楚地知道"零参数"函数和"不确定数量的参数"一。因此,我的建议是咬紧牙关并将特殊情况插入到您的代码中。

如果结构合理,您只需在一个地方进行更改: - )