void f()
{
}
int main(void)
{
f(10,“hello");
return 0;
}
上述代碼在C語言中是完全正確的。但是在C++中確是錯誤的。
void f()
* 在C中表示函數f可以接受任何類型,任意數量的參數。(然而並沒有提供如何利用這些參數的機制,如果想使用可變參數函數,格式為 void f(type a1,…))。
* 而在C++中表示函數f不接受任何參數。
所以要想讓無參函數聲明在C和C++中保持一致含義,請使用如下格式:
void f(void);
f(void)
{
return 1;
}
上述代碼在C中是正確的,但是在C++中是不正確的。
如果聲明函數時,不聲明其返回值,
* C編譯器自動認為函數返回int類型。
* C++編譯器認為這是語法錯誤。
所以如果要讓你的代碼在C和C++下都正確,請為函數原型加上返回值類型。
int f(void)
{
return 1;
}