2

假设我有两个功能,如下所示:

unsigned char PlusTwo(unsigned char value)
{
    return (value + 2);
}
unsigned char PlusTwoUsingPtr(unsigned char *value)
{
    return (*value + 2);
}

如果我想在开发时测试第一个函数,没问题,我要做的就是:

PlusTwo(8);

编译器会自动为我在内存中的某处放置一个常量。但是,要测试第二个功能,它会变得更加复杂。首先我必须声明一个变量,然后将变量的地址传递给函数:

unsigned char eight = 8;
PlusTwoUsingPtr(&eight);

这不是非常耗时,但很烦人(特别是在 C89/ANSI 中,变量必须在功能块的开头声明)。是否有一些技巧可以让我在一行代码中测试这个函数,让编译器声明并放置一个常量供我指向?

4

1 回答 1

5

您可以将复合文字与标量类型一起使用:

 PlusTwoUsingPtr(&((unsigned char){8}));

复合文字是 C99 中引入的一个特性。有关信息,对象是可变的(具有静态存储持续时间),您也可以在函数中对其进行修改。

于 2012-06-06T19:17:52.470 回答