c - 没有返回类型定义的 main() 函数给出警告

标签 c types return program-entry-point

这是我的程序:

main()
{ 
    printf("hello world\n");
}

我在编译时收到这个警告:

function should return a value

main() 更改为 void main() 时,警告消失。

为什么会这样?

最佳答案

有几点需要注意:

  1. intmain() 函数的返回类型。这意味着 main() 的值类型可以 返回是一个整数。
  2. main( ) 可以被 C90 编译器接受,但不能被 C99 编译器接受,这意味着它不再是 C99 标准的一部分,所以不要这样做。
  3. void main() 不是标准形式,一些编译器允许这样做,但没有任何标准将其列为选项。所以, 编译器不必接受这种形式,有几个也不会。 同样,坚持标准形式, 如果您将程序从一个编译器移至另一个编译器,您将不会遇到问题。
  4. 还有最后一件事,而不是像这样写 main :

    int main()//在这里您对将参数传递给 main 保持沉默,这意味着它可能会也可能不会接受参数

这样写:

int main(void)// this specifies there are no arguments taken by main

你可能想看看 C99 standard 了解更多详情

关于c - 没有返回类型定义的 main() 函数给出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18158541/

相关文章:

c - 段错误 11,使用指针并返回它们的问题

haskell - 定义幻像类型 - 无法编译示例

c++函数在返回时将浮点值转换为NaN

php - 函数仅返回 mysqli 查询结果的第一个数组值

c - DigiFlow 最像哪种编程语言?

c - 第一个 scanf ("%s") 在使用第二个 scanf ("%s") 时中断,读取 0

c - 将数字作为原始二进制文件写入文件

c++ - 编译器是否以类似方式对待 int 和 bool 类型?

if-statement - 将反射(reflect)转化为可比数据

C++ 稍后从线程函数获取返回值