转换单个字符,因此可以在需要char *的地方使用

时间:2017-03-08 12:09:39

标签: c casting

如何在调用send_data函数时在以下代码中正确编译SEPARATOR?

foo.h中

#define SEPARATOR 0xFF

void send_data(unsigned char * data, int dataSize);

foo.c的

void welcome(){
   // I want to call it in a one line
   send_data(SEPARATOR ,1);
}

顺便说一句,我当然可以将SEPARATOR定义为const char。但我只是想知道是否有任何方法可以像这样使用它。

2 个答案:

答案 0 :(得分:3)

如果你不想改变它,老派的方法就是解决它:

void welcome(void)
{
  unsigned char data = SEPARATOR;
  send_data(&data, 1);
}

但你也应该能够使用C99复合文字:

send_data((unsigned char[1]) { SEPARATOR }, 1);

答案 1 :(得分:2)

复合文字(C99或更高版本)可能很有用。

void welcome(){
   // I want to call it in a one line
   send_data((unsigned char[]){SEPARATOR} ,1);
}

如果需要,请添加终止空字符。

void welcome(){
   // I want to call it in a one line
   send_data((unsigned char[]){SEPARATOR, 0} ,1);
}