2

我见过std::string用在一个.c文件中。std 是一个 c++ 命名空间,命名空间是在 c++ 中引入的。为什么呢?它不应该抛出错误吗?

4

2 回答 2

9

是的,如果它被编译为 C 代码,它会导致许多编译器错误。如果它被编译为 C++,那么它会编译得很好。例如,GCC-x可以选择编译为的语言,因此您可以根据需要将 a 编译.c为 C++ -x c++。同样,Microsoft Visual C++ 编译器具有分别选择源语言 C 和 C++/Tc的选项。/Tp

我建议您修复您的构建系统,以便它不会将-x c++or/Tp标志传递给不以典型 C++ 源文件扩展名(.cc.cpp.cxxc++和结尾的文件.C,尽管最后三个非常罕见)。

于 2012-10-22T23:23:02.657 回答
0

文件的扩展名只是为了帮助您作为读者。只要您使用 c++ 编译器,编译器就不会在意。

于 2012-10-22T23:23:43.820 回答