2010-07-01 58 views
0

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

我在想这样的事情(例如对于C源文件):

// static variables

// public variables

// static methods

// public methods

+0

你通常不会把静态的头文件为静态的意思是“可见只有这个编译单元”,和C不具有“公共” '方法' - 你确定你不是在谈论C++吗?上面的例子是 – 2010-07-01 09:00:02

+0

是* .c文件。通过公共方法,我的意思是在头文件中声明的方法。一般来说,没有在头文件中声明的每个方法都应该是静态的,所以粗略地说,“公共方法”是“非静态方法” – kmalmur 2010-07-01 09:08:00

+0

我不认为有“标准”;它是一个编码标准/建议,在你的情况下它是一个好的(对于C源文件) – INS 2010-07-01 11:27:42

回答

0

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

页眉:

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

没有的extern变量:-)

编制单位:

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

我倾向于认为是相关的一起群体的事情,所以我不严格把所有的静态变量或定义在oner的地方,但接近他们将要使用的地方。

0

您所使用的结构是好的。

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

1

考虑到这是一个C的问题,我相信:

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

...含义:

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

至于顺序,我不认为你能唤起什么,但一个对此的主观反应。除非您询问特定组织的编码标准,否则它肯定不是标准化的,在这种情况下,他们可能会制定相关政策。有些人可能更喜欢在公共场合下私人,其他人则可以在私人之前公开。有些人可能会先强调一个人对另一个人的重要性,而另一些人则可能会强调重要性高于其前任。关于这些风格偏好并没有一致的协议,并且它们对代码或其运行时行为没有逻辑影响。

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

是否试图减少与外部链接(全局变量)的公共变量的数量。尽管听起来有点小差异,但编写一个公共函数来获取变量是一个很大的进步,即使它是简单的getter型函数,它会返回一个指向变量的指针,因为它至少会允许您修改代码是否有必要进行更改,还允许您在任何访问的位置轻松放置断点,将功能添加到该功能等。

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