C头和源文件的标准结构

时间:2010-07-01 08:53:56

标签: c templates

C源文件和头文件是否有标准化结构?

我正在考虑这样的事情(C源文件的例子):

// static variables

// public variables

// static methods

// public methods

4 个答案:

答案 0 :(得分:1)

鉴于这是一个C问题,我推测:

// static variables
// public variables
// static methods
// public methods

......意思是:

// static variables
// public variables (external linkage)
// static functions
// public functions

关于这个命令,我认为除了对此的主观反应之外,你不会引起任何反应。除非您询问特定组织的编码标准,否则它肯定不会标准化,在这种情况下,他们可能会制定相关政策。有些人可能更倾向于公共场所之前的私有,有些人可能更喜欢私有。有些人可能会先把一个放在另一个之上,以强调一个人相对于另一个人的重要性,而另一些人则可能会强调其重要性超过其前身。关于这些风格偏好并没有一致意见,它们对代码或其运行时行为没有任何逻辑影响。

重要的是保持一致,我建议避免任何异国情调,因为它会吓跑其他必须查看代码的开发人员。如果你想与其他工程师合作,那么异国风格通常很糟糕。越是异国情调的风格,他们越个性化,他们就越需要他人适应个人喜好。

尝试使用外部链接(全局变量)减少公共变量的数量。虽然听起来很小,但是编写一个公共函数来获取变量是一个很大的进步,即使它是一个简单的getter-type函数,它返回一个指向变量的指针,因为它至少可以让你修改它代码,如果有必要进行更改,并且允许您轻松地将断点放在访问它的任何位置,为函数添加检测等。

答案 1 :(得分:1)

我通常将以下内容用于c:

// include guard
#ifndef <filename>_H
#define <filename>_H

// define this as extern for c++
#ifdef __cplusplus
extern "C" {
#endif

#include <libraries>
#define  <preproc variables>
#define  <preproc macros>

enum <enums> {
};

typedef <variables>;
typedef <structs>;

function prototypes();

// end c++ guard
#ifdef __cplusplus
}
#endif 
// end include guard
#endif

答案 2 :(得分:0)

您正在使用的结构很好。

最佳做法是命名公共变量和公共方法,并在产品名称/公司名称前加上相同的名称,以避免与其他库命名冲突。

答案 3 :(得分:0)

这是一个完全主观的问题。但是,这就是我的工作。

标题:

// extern defines, constants and enums
// public types
// extern methods

没有外部变量: - )

编制单位:

// includes
// definitions for extern constants
// static function prototypes
// everything else

我倾向于将相关的东西分组,所以我并没有严格地将所有静态变量或定义放在oner的地方,而是靠近它们的使用位置。