【发布时间】:2017-08-10 07:46:01
【问题描述】:
我已经看到 .c 程序在不包含头文件的情况下执行良好,尽管它会引发警告,但是对于 .cpp 扩展名,不包含头文件会引发错误。有人能解释一下内部行为吗?
【问题讨论】:
-
是的,C 和 C++ 是不同的语言。 (有不同的规则)
-
也许,您正试图访问 C++ 中
std命名空间的成员。您可能没有包含正确的标题,因此,您会收到如下错误:"foo" is not a member of 'std'。 -
您应该将因缺少头文件而导致的警告视为错误。
-
事实上,使用没有原型的函数在 C 中也是无效的,但在 C99 之前,它还可以,所以编译器的行为是向后兼容的。
-
重新阅读这个问题,我认为它不值得这么多反对。是的,您可以将其解读为“我希望 C 和 C++ 相同”,这很愚蠢。但是考虑到所描述的代码在两种语言中确实是一个错误,为什么许多 C 编译器接受它可能会引起一些人的兴趣。
标签: c++ c c-preprocessor