C头文件和源文件的标准结构

C头文件和源文件的标准结构,c,templates,C,Templates,是否有任何标准化的C源文件和头文件结构 我正在考虑这样的事情(C源文件的示例): //静态变量 //公共变量 //静态方法 //公共方法 您使用的结构很好 最佳做法是在命名公共变量和公共方法时,在产品名称/公司名称前加上相同的前缀,以避免与其他库的命名冲突。您使用的结构很好 关于公共变量和公共方法的命名,最佳做法是在产品名称/公司名称前加上相同的前缀,以避免与其他库的命名冲突。鉴于这是一个C问题,我认为: // static variables // public variables // s

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

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

//静态变量

//公共变量

//静态方法

//公共方法


您使用的结构很好


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

您使用的结构很好


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

鉴于这是一个C问题,我认为:

// static variables
// public variables
// static methods
// public methods
。。。指:

// static variables
// public variables (external linkage)
// static functions
// public functions
至于订单,我认为你对此只能做出主观的反应。它当然不是标准化的,除非您询问某个特定组织的编码标准,在这种情况下,他们可能对此有策略。有些人可能更喜欢在公众之前的私人,其他人则更喜欢在私人之前的公众。有些人可能会把一个放在另一个之前,以强调一个对另一个的重要性,而另一些人可能会把它放在后面,以强调其对其前身的重要性。对于这类风格偏好没有一致的意见,它们对代码或其运行时行为没有逻辑上的影响

重要的是保持一致性,我建议避免任何非常奇怪的事情,因为这会吓跑其他必须查看代码的开发人员。如果你想和其他工程师一起工作,异国风格通常是不好的。越是异国情调的风格,他们越是独特的个人风格,他们就越需要别人根据个人喜好进行调整


尽量减少具有外部链接(全局变量)的公共变量的数量。听起来差别很小,编写一个公共函数来获取变量是一个很大的进步,即使它是一个简单的getter类型函数,返回一个指向变量的指针,因为它至少允许您在需要更改时修改代码,并且允许您在访问任何地方轻松放置断点,向函数添加插装等。

鉴于这是一个C问题,我认为:

// static variables
// public variables
// static methods
// public methods
。。。指:

// static variables
// public variables (external linkage)
// static functions
// public functions
至于订单,我认为你对此只能做出主观的反应。它当然不是标准化的,除非您询问某个特定组织的编码标准,在这种情况下,他们可能对此有策略。有些人可能更喜欢在公众之前的私人,其他人则更喜欢在私人之前的公众。有些人可能会把一个放在另一个之前,以强调一个对另一个的重要性,而另一些人可能会把它放在后面,以强调其对其前身的重要性。对于这类风格偏好没有一致的意见,它们对代码或其运行时行为没有逻辑上的影响

重要的是保持一致性,我建议避免任何非常奇怪的事情,因为这会吓跑其他必须查看代码的开发人员。如果你想和其他工程师一起工作,异国风格通常是不好的。越是异国情调的风格,他们越是独特的个人风格,他们就越需要别人根据个人喜好进行调整


尽量减少具有外部链接(全局变量)的公共变量的数量。听起来差别很小,编写一个公共函数来获取变量是一个很大的进步,即使它是一个简单的getter类型函数,返回一个指向变量的指针,因为它至少允许您在需要更改时修改代码,并且允许您在访问任何地方轻松放置断点,向函数添加插装等。

这是一个完全主观的问题。不过,我大致是这样做的

标题:

// extern defines, constants and enums
// public types
// extern methods
没有外部变量:-)

编制单位:

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

我倾向于将相关的事物组合在一起,所以我不会把所有静态变量或定义放在一个地方,而是放在它们将要使用的地方附近。

这是一个完全主观的问题。不过,我大致是这样做的

标题:

// extern defines, constants and enums
// public types
// extern methods
没有外部变量:-)

编制单位:

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

我倾向于将相关的事物组合在一起,因此我不会将所有静态变量或定义严格地放在一个地方,而是放在它们将要使用的地方附近。

我通常对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
//包括防护罩
#如果没有
#定义
/将此定义为C++的外部版本
#ifdef_uucplusplus
外部“C”{
#恩迪夫
#包括
#定义
#定义
枚举{
};
typedef;
typedef;
函数原型();
//端C++守护程序
#ifdef_uucplusplus
}
#恩迪夫
//端部包括防护罩
#恩迪夫

我通常对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
//包括防护罩
#如果没有
#定义
/将此定义为C++的外部版本
#ifdef_uucplusplus
外部“C”{
#恩迪夫
#包括
#定义
#定义
枚举{
};
typedef;
typedef;
函数原型();
//端C++守护程序
#ifdef_uucplusplus
}
#恩迪夫
//端部包括防护罩
#恩迪夫

<>代码>通常不会把静态放在头文件中,因为静态的意思是“只在这个编译单元中可见”,C没有“公共”方法。你确定你不是在谈论C++吗?上面的例子是*.c文件。公共方法是指在头文件中声明的方法。一般来说,每个未在头文件中声明的方法都应该是静态的,所以粗略地说,“公共方法”是“非静态方法”,我认为没有“标准”;这是一个编码标准/建议,在您的情况下,这是一个很好的标准(对于C源文件),您通常不会将静态放在头文件中,因为静态意味着“仅在此编译单元中可见”,并且C没有“公共”方法-您确定您不是在谈论abo吗