2010-03-26 14 views
7

main使用了多少個參數? main定義的哪些變體是可能的?main()在C/C++中有多少個參數

+0

在那裏的「相關」鏈接:http://stackoverflow.com/questions/1621574/mains-signature-in-c此外,你的標籤是不符合你的標題。 – dmckee 2010-03-26 17:49:25

+0

增加了'C++'標籤以保持與標題 – jschmier 2010-03-26 18:08:30

回答

22

C++標準:(Source

的C++ 98標準說在第3.6.1.2

它應具有 int類型的返回類型,但除此之外,其類型是 實現定義。所有 實現應允許兩個主要的 以下定義:整數 主()和int主(INT的argc,字符* 的argv [])

通常有3組參數:

  • 沒有參數/ void
  • int argc, char ** argv
  • int argc, char ** argv, char ** env

argc是命令行的數目,argv是實際的命令行,並env是環境變量。

的Windows:

對於Windows應用程序,你有WinMain函數具有不同的簽名,而不是主要的切入點。

int WINAPI WinMain(
    __in HINSTANCE hInstance, 
    __in HINSTANCE hPrevInstance, 
    __in LPSTR lpCmdLine, 
    __in int nCmdShow 
); 

OS X:(Source

Mac OS X和達爾文具有包含任意OS提供的信息,第四參數,諸如路徑到執行二進制:

int main(int argc, char **argv, char **envp, char **apple) 
+0

的一致性,以及linux中的auxv如何? – osgx 2010-03-26 17:13:43

+1

@osgx:我不確定其他人是否可能,但上面提到的3個g ++都支持 – 2010-03-26 17:16:17

+0

我從來沒有理解'main'返回int的要求。 'main'是唯一明確允許隱式返回值的函數。爲什麼要讓'main'僞裝成'void',而不是簡單地讓它成爲'void'開頭呢? – 2010-03-26 19:19:26