C 中,main函式中不能定義其他函式!

2021-09-20 18:57:47 字數 1531 閱讀 8426

vs2017,c++語言。

今天在程式設計時遇到乙個很奇怪的問題,程式如下:

#include#include#include using namespace std;

int main()

; char * getinfo(vector& conflist, const char *pitem)

return nullptr;

} //servername = 1區;

//serverid = 100000;

conf *pconf1 = new conf;

strcpy_s( pconf1->itemname, sizeof(pconf1->itemname), "servername");

strcpy_s( pconf1->itemcontent, sizeof(pconf1->itemcontent), "1區");

conf *pconf2 = new conf;

strcpy_s(pconf2->itemname, sizeof(pconf2->itemname), "serverid");

strcpy_s(pconf2->itemcontent, sizeof(pconf2->itemcontent), "100000");

vector conflist;

conflist.push_back(pconf1);

conflist.push_back(pconf2);

char * p_tmp = getinfo (conflist, "servername");

if (p_tmp != nullptr)

//我們要釋放記憶體,new 要對應釋放,否則會造成記憶體洩露

vector::iterator pos;

for (pos = conflist.begin() ;pos != conflist.end(); ++pos)

conflist.clear();//這個要不要都行,結束時會系統**

system("pause");

return 0;

}

編譯的時候,提示有以下錯誤:

1>e:\c++\temp\temp\x0503.cpp(18): error c2601: 「getinfo」: 本地函式定義是非法的

1>e:\c++\temp\temp\x0503.cpp(9): note: 此行有乙個「;

char * getinfo(vector& conflist, const char *pitem)

return nullptr;

}int main()

//我們要釋放記憶體,new 要對應釋放,否則會造成記憶體洩露

vector::iterator pos;

for (pos = conflist.begin() ;pos != conflist.end(); ++pos)

conflist.clear();//這個要不要都行,結束時會系統**

system("pause");

return 0;

}輸出結果為:1區

C 中的main函式

1 乙個程式可以包含乙個或者多個函式,但只能必須有乙個命名的main函式 2 main函式是唯一被作業系統顯式呼叫的函式 3 main函式的返回型別必須為int型,返回0值表示執行成功,返回其他值表明有錯誤 出現,每個作業系統的具體返回內容不一樣 4 c 容許主函式main 有或者沒有引數列表,如果...

C 中main函式的引數

眾所周知,每乙個可執行檔案對應的源程式必定有乙個main 函式,而在命令列介面中輸入的引數就是通過main 函式的引數進行傳入的。在很多c 程式設計當中,我們設計的main 函式既沒有輸入引數,也沒有返回值,但實際上,main 函式與其他函式一樣,可以有引數和返回值的。main 函式可以有兩個形式引...

C中main函式傳參

int main int argc,const char agr int argc 命令列引數個數 包含檔名 const char ar 指標陣列 將命令列引數首位址作為元素,加上const關鍵字的意思是陣列中的內容是不能修改的,很明顯,我們進行傳參的時候,裡面的內容是不需要修改的,這就是const...