【问题标题】:Macro expansion in C — retrieving unsigned 32 bit wordC 中的宏扩展——检索无符号 32 位字
【发布时间】:2012-09-30 11:29:38
【问题描述】:

下面的 sn-p 是如何工作的?什么是IN? Eclipse 说 IN 代表“宏扩展”:

 UWORD32 (*get_u32)(IN UWORD8 *buffer_ptr);    /* Gets unsigned 32bit word   */
                                           /* from the buffer */

以上代码是结构的一部分。并且是这样使用的。

struct my struct s;
UWORD8* buf;

s->get_u32(buf);

它是如何工作的?

【问题讨论】:

  • 还提到系统(Linux/window?)...我在 Linux 中通过库文件搜索“IN”,没有找到这样的宏。

标签: c types macros struct buffer


【解决方案1】:

我猜IN#defined 某处为const

#define IN const    // input parameters are const

get_u32 只是一个函数指针——该函数接受一个参数(指向UWORD8 的指针)并返回一个UWORD32

【讨论】:

  • IN 的定义是这样的: /* 用 IN 声明的参数,将用于保存输入值 */ #define IN 没有 const...这是什么意思?
  • 它的含义并没有太大的区别——它只是一个符号上的方便。在这种情况下,IN 实际上只是一条评论。
【解决方案2】:

您甚至可以将 IN 声明为“无”

#define IN
#define OUT

在这种情况下,它只会使您的代码更具可读性:)

void func ( IN param_t param1,         /* INPUT PARAM */
            IN param_t param2,         /* INPUT PARAM */
            OUT param_t *param3);      /* OUTPUT PARAM */

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 2013-10-16
    相关资源
    最近更新 更多