2013-07-10 59 views
1

對不起這樣的noobie問題,我以前從未遇到過這個問題,我在網上查找,但只能找到argc和argv的描述。參數數量無效

不管怎樣,我開始在Visual Studio 2012年我點擊空項目一個新的Win32控制檯項目,並開始通過增加program.cpp與內容如下:

#include <iostream> 
#include <Windows.h> 

int main(int argc, char** argv) 
{ 
    printf("%d", argc); 
    getchar(); 
    return 0; 
} 

我打算使用參數來製作一個程序,這就是爲什麼我需要argc才能正常工作。該代碼輸出一個巨大的數字,如'21374903'。在properties - > linker - > advanced中,我將入口點設置爲'main'。

有什麼我做錯了嗎?我可以添加設置以使其正常工作嗎?

+0

請注意,您必須爲'printf'和'getchar'包含'',''是不必要的。 –

+0

@JamesMcNellis Windows.h用於SetConsoleTitle(尚未添加),並且iostream包含printf和getchar。我編譯了一個空的項目,所以我不需要stdio.h :) – MysteryDev

回答

7

在properties - > linker - > advanced中,我將入口點設置爲'main'。

不這樣做。入口點需要是C運行時(CRT)入口點,該入口點執行C初始化,從操作系統獲取參數,並使用它們調用您的main函數。

如果你沒有明確地告訴鏈接器什麼入口點被命名,它會自動選擇正確的。調用main的CRT入口點被命名爲mainCRTStartup(還有其他名稱的CRT入口點可調用Visual C++支持的其他類型的主要函數)。

+0

哇謝謝!我只是假定我必須這樣做。你必須定義一切(傻笑)。 – MysteryDev

+0

從來沒有想過修改入口點,知道它應該是什麼很有用。 – icedwater

+1

當您需要覆蓋入口點時,極少數情況(讀取:非常少見)。 –