.c文件中的std :: string

Sho*_*hoe 1 c c++ std

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

Ada*_*eld 8

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

我建议你解决你的编译系统,以便它不通过-x c++/Tp标志文件不具有典型的C++源文件扩展名结尾(.cc,.cpp,.cxx,c++,和.C,但是最后三个是非常罕见的).