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

时间:2019-03-05 08:09:30

标签: 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))

然后将为具有已知大小的数据类型(例如指针,字节,int16,int32,int64,数组,结构,枚举)创建这样的宏,但是我想为所有这些创建单个宏函数。该怎么称呼?

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

1 个答案:

答案 0 :(得分:2)

我认为我们可以在这里从C标准本身取得领先。我将引用C11标准草案n1570。

  

3。术语,定义和符号

     

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

似乎正好位于您的小巷。如果您假设作为宏参数提供的令牌是一个表达式,其结果为指向单个对象的指针,那么send_object似乎是合适的。

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

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