c++ - .c 程序不需要包含 header ,但 .cpp 程序需要包含 header

标签 c++ c c-preprocessor

我发现 .c 程序在不包含头文件的情况下执行得很好,尽管它会引发警告,但是对于 .cpp 扩展名,不包含头文件会引发错误。有人可以解释一下内部行为吗?

最佳答案

简单答案:C 和 C++ 是具有不同规则的不同语言。

对于您的具体问题:在两种语言中使用没有原型(prototype)的函数确实是非法。但在 C 中,曾经有一段时间这是合法的(在 C99 之前),因此许多编译器仍然允许它,并在默认操作模式中发出向后兼容性警告。另一方面,这在 C++ 中从来是不合法的,因此不太可能找到接受此类代码的 C++ 编译器。

关于c++ - .c 程序不需要包含 header ,但 .cpp 程序需要包含 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45607495/

相关文章:

将 int 转换为 uint8_t

hash - 字符串的编译时(预处理器)散列

c++ - 替换循环缓冲区/fifo 队列数组元素中的 "FOR()"宏

c++ - imread 不能在 qt 上工作

c# - 将 C/C++ 宏转换为 C# 中的等效代码

c - "Magic ring buffer"在Linux内核空间的实现?

c++ - 在 Windows 上的预处理器中检测带有符号的建筑物

c++ - 一个关于在 C++ 中转换整数的简单问题

c++ - Typedeffing 函数(不是函数指针)

c - mmap 或 malloc 是否分配 RAM?