2

我需要像这样传递一些结构作为函数参数

void myFunc(unsigned char c);

我会用myFunc(4)myFunc(8)左右。

现在该函数接受一个结构作为参数,所以我尝试了

typedef struct {
    unsigned char address;
    unsigned char command;
    unsigned char group;
    unsigned char response;
    unsigned char flags1;
    unsigned char flags2;
}test_t;

void myFunc(test_t test);

myFucn({0,0,0,0,0}); // but this gives me error 

如何将 const struct 作为参数传递而不必先实例化?就像 myFunc(4) 作为 unsigned char 一样。

谢谢

4

1 回答 1

8

在 C99 中,您可以使用复合文字

myFunc((test_t) { 0, 0, 0, 0, 0 });

当然,由于结构是按值传递的,因此您是否认为它是“const”并不重要。无论函数对它做什么,对外部来说都无关紧要。

在以前的 C 版本中,您不能这样做。

于 2012-12-11T16:11:41.020 回答