【发布时间】:2016-01-03 00:34:39
【问题描述】:
假设我正在编写一个名为my 的库,它有一个模块myString。
myString 的公开函数和常量在 myString.h 中声明,约定如下:
typedef struct myString myString;
extern const size_t MY_STRING_MAX_LEN;
myString *my_string_new();
仅私有实现的函数和结构成员在 myString.c 中声明,约定如下:
_grow_buffer(myString *this);
char *_buffer;
我的问题:对于私有的、仅实现的常量是否有类似的约定?
例如,_CHUNK_SIZE 是我最初想要使用的。然后我读到 C 语言规范说不要在名称开头使用下划线后跟大写字母,因为这样的名称可能会在该语言的未来版本中使用。
我喜欢使用下划线开头的约定,因为它消除了很多冗长。我可以使用 MY_STRING_CHUNK_SIZE 或一些变体,但这不是 IMO 漂亮。
【问题讨论】:
-
不完全在您的问题范围内,但请注意许多人argue 认为全大写标识符的使用应仅限于宏。我同意那些人的看法。
-
@5gon12eder:实际上这是唯一被广泛接受的命名约定。
-
很好奇为什么有些标识以“my”开头,而另一些则以“my_”开头?IMO,它应该是另一个。