C+的正确布局+;头文件 什么是C++文件的正确布局?< /P>

C+的正确布局+;头文件 什么是C++文件的正确布局?< /P>,c++,header,C++,Header,我的意思是头保护,包括,typedef,枚举,结构,函数声明,类定义,类,模板等等 我正在移植一个已有10年历史的旧代码库,从Codewarrior 8迁移到一个现代编译器,这很有趣,因为事情似乎到处都是。我遇到了很多不命名类型的错误,禁止在没有类型的情况下声明等等。关于如何组织标题,没有灵丹妙药。 然而,一个重要的规则是在整个项目中保持一致,以便参与项目的所有人员都知道会发生什么 通常,typedef和defines位于我的头文件的顶部,但这不能被视为一个规则,然后是类/模板定义 < >我遵循

我的意思是头保护,包括,typedef,枚举,结构,函数声明,类定义,类,模板等等


我正在移植一个已有10年历史的旧代码库,从Codewarrior 8迁移到一个现代编译器,这很有趣,因为事情似乎到处都是。我遇到了很多不命名类型的错误,禁止在没有类型的情况下声明等等。

关于如何组织标题,没有灵丹妙药。 然而,一个重要的规则是在整个项目中保持一致,以便参与项目的所有人员都知道会发生什么

通常,typedef和defines位于我的头文件的顶部,但这不能被视为一个规则,然后是类/模板定义


< >我遵循C++的规则是每类的一个标题,它通常保持标题足够小,以便于抓取内容和查找内容,而不需要滚动太多。

关于如何组织您的标题没有什么银弹。 然而,一个重要的规则是在整个项目中保持一致,以便参与项目的所有人员都知道会发生什么

通常,typedef和defines位于我的头文件的顶部,但这不能被视为一个规则,然后是类/模板定义


< >我遵循C++的规则是每一个类的一个头,它通常保持标题足够小,以便于抓取内容和查找内容,而不需要滚动太多。

我认为最好的办法是检查任何库文件的布局。 我认为你们能做的最好的事情就是查看任何库文件的布局

这取决于你所说的适当。如果你指的是强制语言,那就真的没有了。事实上,你甚至不必给它命名为“.h”。我已经看到.c文件
#在工作商业代码中包含了
'd(保留名称以保护罪犯)#include只是一种预处理器技术,通过允许文件以文本方式包含其他文件,从而在语言中获得某种粗略的模块化。任何你倾向于将其视为标准实践的东西,都只是人们随着时间发展而形成的有用的习语

但这对你当前的问题没有帮助

我猜你实际上看到的是由于平台差异而丢失的很多符号。完全不是由于格式奇怪的.h文件造成的


旧代码可能是为了使用旧的K&R风格的C编译器而编写的。它们有一些奇怪之处,比如隐式函数声明(对未声明例程的任何引用都假定它返回int,并且它的所有参数都是int)。您可以尝试查看编译器是否有K&R标志,但许多标记的内容实际上可能是旧代码中的潜在错误。

这取决于您所说的正确。如果你指的是强制语言,那就真的没有了。事实上,你甚至不必给它命名为“.h”。我已经看到.c文件
#在工作商业代码中包含了
'd(保留名称以保护罪犯)#include只是一种预处理器技术,通过允许文件以文本方式包含其他文件,从而在语言中获得某种粗略的模块化。任何你倾向于将其视为标准实践的东西,都只是人们随着时间发展而形成的有用的习语

但这对你当前的问题没有帮助

我猜你实际上看到的是由于平台差异而丢失的很多符号。完全不是由于格式奇怪的.h文件造成的


旧代码可能是为了使用旧的K&R风格的C编译器而编写的。它们有一些奇怪之处,比如隐式函数声明(对未声明例程的任何引用都假定它返回int,并且它的所有参数都是int)。您可以尝试查看您的编译器是否有K&R标志,但许多标记的内容实际上可能是旧代码中的潜在错误。

听起来您遇到了基于先前实现的假设。(Codewarrior)。例如:

#include <iostream>
int main() {
  std::cout << "string literal\n";
  return 0;
}
#包括
int main(){

std::cout听起来您好像遇到了基于先前实现的假设(Codewarrior)。例如:

#include <iostream>
int main() {
  std::cout << "string literal\n";
  return 0;
}
#包括
int main(){

std::你能不能更具体地说明你得到的错误?确实没有“正确的布局”,可能只是一些最佳实践。@Space-C0wb0y-xxx不声明类型,禁止声明没有类型的向量,等等。这一切在CW 8中编译得很好,迁移到GCC为我提供了所有这些…J.T.,听起来不太像头文件-那么,源代码中也很可能会出现类型问题…我认为您最好尝试一下g隔离更具体的问题,并为他们提出单独的问题。你能更具体地说明你得到的错误吗?确实没有“正确的布局”,可能只是一些最佳实践。@Space-C0wb0y-xxx不声明类型,禁止声明没有类型的向量,等等。这一切在CW 8中编译得很好,迁移到GCC为我提供了所有这些…J.T.,听起来不太像头文件-那么,源代码中也很可能会出现类型问题…我认为您最好尝试一下g隔离更具体的问题,并为其单独提出问题。