我一直在想很多关于最简单的方式来最低限度地表达C中的主要功能(是的,它是微不足道的,通常不感兴趣,但这对我很有意思)。是否有任何问题与主要定义为int main(...){}
很长一段时间,为了这一天,我喜欢定义主要如下:
int main(int argc, char **argv)
{
return 0;
}
我对这个问题,我通常不会使用这些参数,所以它使论点明确,即使我在代码中不要太在意他们写出来。
于是我开始做
int main()
{
return 0;
}
这是诚实的,因为它没有明确地说,函数没有参数,如许多int main(void){}
定义做了,我很满意。
但是,我只是有一个想法,使用主的可变参数定义使得主的定义对我来说更加舒适,因为它“看起来”对我来说好像函数确实有参数,但我不关心它们是正确的现在。
int main(...)
{
return 0;
}
这样滥用符号...有什么问题吗?也就是说,......意味着用于模式的函数(可以推导出以下参数的个数的参数,...)。而这个主要不适合这种模式,并在技术上是滥用符号。
我理解符号会误导其他读者(...有些先进的概念,并且被滥用会使其更具误导性),并且在共享代码时我仍然更喜欢其他原型。我只是很好奇C是否有效。
我的问题是:
主要是便携式的可变参数的定义或者是有可能,一些编译器会不喜欢它。
做这种定义通常是可以的,或者是这样做的运行时/编译时结果?
对'(void)'和'(int,char **)'以外的签名的支持是由实现定义的,因此请咨询您的供应商。代码将不可移植。 –
你尝试过'int main(...)'吗?如果你的编译器接受它是有效的,那么你使用的是什么编译器? – user3386109
@ user3386109“g ++(Debian 4.7.2-5)4.7.2”和 “Debian clang version 3.0-6.2(tags/RELEASE_30/final)(based on LLVM 3.0)” – Dmitry