如何从定义初始化char []

时间:2014-02-11 18:17:22

标签: c arrays

我想将我的定义复制到我的var IP:

#define IP_ADDR {169, 254, 0, 3}

struct
{
  // ....
  char IP[4];

} COM_INFO;

memcpy(COM_INFO.IP, IP_ADDR, 4);

但它不起作用。

2 个答案:

答案 0 :(得分:2)

您的define必须是这样的:

#define IP_ADDR ((unsigned char []){169, 254, 0, 3})

现在您可以使用memcpy

示例代码

#include <stdio.h>
#include <string.h>

#define IP_ADDR ((unsigned char []){169, 254, 0, 3})

int main(void)
{
    unsigned char ip[4];

    memcpy(ip, IP_ADDR, 4);

    printf("%u.%u.%u.%u\n", ip[0], ip[1], ip[2], ip[3]);

    return 0;
}

示例输出

  

169.254.0.3

答案 1 :(得分:1)

IP_ADDR将被粘贴到任何引用的地方(由预处理器)。所以,您可以执行以下操作:

int main(int argc, const char* argv[])
{
    // Initialize the COM_INFO structure.
    COM_INFO comInfo = { 
        // ...
        IP_ADDR,  // {169, 254, 0, 3} will be pasted here
        // ...
    };

    return 0;
}