【问题标题】:How to organize C multi-file project? [closed]如何组织C多文件项目? [关闭]
【发布时间】:2018-10-08 12:14:56
【问题描述】:

我有三个源文件和一个头文件。 main() 在第一个 .c 中,主要 (对我来说,很难找到单词“main”的同义词;d) 函数在第二个 .c 中,杂项函数 - 在最后。包括,定义,函数原型,结构,全局变量的库都在头文件中。

这是正确的组织吗?

我应该使用哪个参数来命名 clang 的可执行文件? -o 仅适用于单文件项目。

【问题讨论】:

  • 我听说过makefile,但我不知道为什么要使用它。
  • 你可以写个答案把我介绍给makefile ;)
  • 你不会编译 .h 文件。如果应该是 clang -O3 main.c functions.c misc.c 然后是 clang -o executablefile main.o functions.o misc.o 并运行程序:./executablefile。但是使用makefile更好。您的文件组织听起来或多或少不错,但您的描述不是很准确..
  • 关于 make 的简短介绍:google "makefile make introduction"
  • "全局变量在头文件中" 不不不!帮自己一个忙,停止使用全局变量。但是如果你必须继续使用它们,请不要将它们添加到头文件中(除非它们前面有 extern 并在 1 个单独的源文件中正确定义)。

标签: c project


【解决方案1】:

这是正确的组织吗?

不,不是。

基本上,您希望 1 个源文件与 1 个头文件对应(具有main() 函数的文件除外),因此在您的示例中,您将拥有“second.h”和“last.h” .
不要忘记在“second.c”中#include "second.h" 让编译器检查所​​有内容(“last.c”也是如此)。

另外,在需要的地方执行#include。如果您将struct tm 用于参数,例如在头文件和源文件中使用#include <time.h>。将不需要的包含保留在头文件之外。

还记得用header guards

适当地防止多重包含
#ifndef SECOND_HEADER_INCLUDED
#define SECOND_HEADER_INCLUDED
//avoid #includes
//#defines
//structs
//typedefs, but don't hide *
//avoid globals, use with extern if really needed
//prototypes
#endif

【讨论】:

猜你喜欢
  • 2012-06-02
  • 2012-04-16
  • 2019-04-13
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
相关资源
最近更新 更多