C 命名指向数据类型的单个对象/实例的指针

C 命名指向数据类型的单个对象/实例的指针,c,types,terminology,term,C,Types,Terminology,Term,序曲 在我工作的地方,人们说我使用了错误的术语或是发明了自己的术语。我的老板说,在团队中工作时,正确的术语非常重要 问题 在C语言中,当我们引用指向任何数据类型的指针时,正确的术语是什么?例如,我想创建send()函数的宏函数,如下所示: size_t send_stub (socket, void* , size_t); #define send_str(sock, str) send_stub(sock, str, strlen(str)) 接下来将为具有已知大小的数据类型(如指针、字节

序曲

在我工作的地方,人们说我使用了错误的术语或是发明了自己的术语。我的老板说,在团队中工作时,正确的术语非常重要

问题

在C语言中,当我们引用指向任何数据类型的指针时,正确的术语是什么?例如,我想创建
send()
函数的宏函数,如下所示:

size_t send_stub (socket, void* , size_t);

#define send_str(sock, str) send_stub(sock, str, strlen(str))
接下来将为具有已知大小的数据类型(如指针、字节、int16、int32、int64、数组、结构、枚举)创建这样一个宏,但我想为所有这些类型创建一个宏函数。它叫什么

#define send_?(sock, ?) send_stub(sock, ?, sizeof(?))

我认为我们可以从C标准本身开始。我将引用n1570,C11标准草案

3。术语、定义和符号

对象
1执行环境中的数据存储区域,其内容可以表示值
2注:当引用时,对象可能被解释为具有特定类型;见6.3.2.1

看起来很适合你。如果假设作为宏参数提供的标记是一个表达式,其计算结果是指向单个对象的指针,则
send\u object
似乎是合适的

#define send_object(sock, obj_ptr) send_stub(sock, (obj_ptr), sizeof *(obj_ptr))

如果我们还假设指针指向一个完整的对象类型,那么
sizeof*(obj_ptr)
就是该对象的大小。

对不起,您所说的“宏函数”是什么意思?我认为您根本不应该像宏那样使用函数,始终直接使用
send_stub
。这让你做什么更清楚了。宏通常会使代码更难阅读和理解。所有指针只指向单个对象/实例。所以我认为正确的名字应该是一个“指针”。真是讽刺。宏不是函数。正确的术语是函数式宏。它只是看起来一样,但这两个概念相距甚远。一个试图完成函数工作的宏,我称之为“坏主意”。讽刺的是,我也喜欢object和string是长度相同的单词,在string宏下定义时对齐得很好,哈哈。(如果你认为我是可读性的粉丝,你是对的)。