C++ 正在使用.h作为c++;文件错了吗?

C++ 正在使用.h作为c++;文件错了吗?,c++,header-files,file-extension,C++,Header Files,File Extension,是使用.h作为C++文件的头错误吗?< /p> 我到处都能看到它,尤其是用“C风格”编写的代码。 我注意到,Emacs总是为.h报头选择C高亮样式,而对于HPP或HH则选择C++。p> 给你的标题加上标签真的是“错误的”吗?还是这只是让我恼火的事情 编辑: P> >这是一个很好的(ISH)原因,这让我很恼火,如果我有项目文件被标记为“HPP和CPP”,我可以摆脱“GRIP东西*pp”等。否则我必须键入'.''.''.cp''/p>< p>这和其他文件一样。C++的C,.c++,使用.h,C++

是使用.h作为C++文件的头错误吗?< /p> 我到处都能看到它,尤其是用“C风格”编写的代码。 我注意到,Emacs总是为.h报头选择C高亮样式,而对于HPP或HH则选择C++。p> 给你的标题加上标签真的是“错误的”吗?还是这只是让我恼火的事情

编辑:


<> P> >这是一个很好的(ISH)原因,这让我很恼火,如果我有项目文件被标记为“HPP和CPP”,我可以摆脱“GRIP东西*pp”等。否则我必须键入'.''.''.cp''/p>< p>这和其他文件一样。C++的C,.c++,使用.h,C++,.HPP。这将满足大多数编译器/编辑器的要求。不这样做并不是错误的,但它可以用来提示您实际使用的是哪两种语言


如果您想在不重命名文件的情况下停止这种行为,您应该查看Emacs配置,并尝试更改源代码检测。

这没什么错。这是默认的微软Visual C++。

只要按照你喜欢的标准,坚持下去。

< P>因为Emacs没有简单的方法来找出.h文件是C还是C++,所以选择C文件为.h文件和C++文件。

注意,所有的Boost头文件都是用.Hpp.< /P> < P>后缀的,调用C++头文件是不对的。没有关于代码必须使用什么扩展的规则。对于非标题,MSVC在Linux上也使用.cpp和.cc。没有一个全球标准,而且.h肯定被广泛使用


但是我要说的是,调用你的标题.hpp(我也见过几次.hh)比仅仅使用.h.

更为一致和信息丰富。你可以自由地使用
.h
.h
.hpp
.hxx
.hh
,或者其他什么。就像你可以自由使用<代码> C代码> C代码> >代码> >代码> >代码> > CPP <代码> >代码> > cc>代码>或>代码> CX< <代码> C++源代码。扩展在很大程度上是一种惯例。

注意,大多数标准库根本不使用扩展。不过,标准库是一种特例。不要开始写没有扩展名的头。标准库头根本不需要是“文件”,所以这里不是一个好例子。编译器可以自由地实现它们,因为它认为合适。我可能已经知道这都是比尔的错,grrrrstrange,vim没有这个问题,那么?为vim本垒打一分!呵呵,我最近决定编写一些绑定到F9的elisp,以便为.h头文件在c模式和c++模式之间切换:(defun switch-c-or-c++-mode()“如果当前是c-mode,则切换到c++-mode,反之亦然。”(交互式)(cond((eq-major mode'c-mode)(c++-mode))((eq-major mode'c++-mode)(c-mode)))我想真正的问题是,你为什么要让事情变得不必要的更不清楚。@anon,@Judge:事实上,Vim也有这个问题。默认情况下,VIM只假设C++。尝试:打开一个文件扩展名为
.h
的文件,然后键入
:setl ft?
。它会告诉你文件类型被设置为C++(<代码> CPP < /代码>)。