歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C與C++函數聲明時的幾個小的語法差異

C與C++函數聲明時的幾個小的語法差異

日期:2017/3/1 9:13:37   编辑:Linux編程

C與C++函數聲明時的幾個小的語法差異

1 無參函數的聲明

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);

2 函數返回值

f(void)
{
 return 1;
}

上述代碼在C中是正確的,但是在C++中是不正確的。

如果聲明函數時,不聲明其返回值,
* C編譯器自動認為函數返回int類型。
* C++編譯器認為這是語法錯誤。

所以如果要讓你的代碼在C和C++下都正確,請為函數原型加上返回值類型。

int f(void)
{
   return 1;
}

Copyright © Linux教程網 All Rights Reserved