我一直在想很多關於最簡單的方式來最低限度地表達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