指向单个 object/instance 数据类型的指针的命名

Naming of a pointer to single object/instance of a data type

序曲...

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

问题

在 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. Terms, definitions, and symbols

3.15 object
1 region of data storage in the execution environment, the contents of which can represent values
2 NOTE When referenced, an object may be interpreted as having a particular type; see 6.3.2.1.

似乎正合您意。如果您假设作为宏参数提供的标记是一个计算结果为指向单个对象的指针的表达式,那么 send_object 似乎是合适的。

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

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