【问题标题】:C. Pass the #predefined list of arguments to functionC. 将#predefined 参数列表传递给函数
【发布时间】:2015-09-02 12:25:34
【问题描述】:

在 C 中,有一种方法可以使用预定义的值列表来初始化数组或结构:

#define STRUCT_DUMMY_VAL1  "dummy", 21, 2.3
struct dummy d = {STRUCT_DUMMY_VAL1};

#define INT_ARRAY_VAL1     1,2,3
int a[] = {INT_ARRAY_VAL1};

有没有办法将预定义的参数列表传递给函数?

#define IP_ADDR  192,168,3,3
ip_addr_assemble(u8_t,u8_t,u8_t,u8_t);
void dosmth(){
    u32_t ip = ip_addr_assemble(IP_ADDR);  // Compile error
}

【问题讨论】:

  • 你为什么不真正发布编译器错误?
  • 它应该可以工作。可能有别的东西在路上。

标签: c ip c-preprocessor low-level


【解决方案1】:

这样的代码没有问题。 GCC 在没有任何警告的情况下吃了它。问题出在我的编译器上。 你可以在ideone上测试https://ideone.com/0VIkz5

【讨论】: