我希望将十六进制或十进制值的数组传递给函数,而不依赖于ascii字符串中的转义序列。
#include <stdio.h>
char one[] = "\xDE\xAD\xBE\xEF";
char two[] = { 0xDE,0xAD,0xBE,0xEF };
int main()
{
puts(one);
puts(two);
puts("\xDE\xAD\xBE\xEF");
puts((char *){0xDE,0xAD,0xBE,0xEF}); // I guess that's not how it works
}我在某个地方看到过这样的语法,但无法找到文档中描述其正确用法的部分。
当我将这样的语法传递到“AVR的mikroC专业版”中时,它会弹出并丢弃“无效表达式”。尽管如此,还是有一些东西(“\xAB\xCD”);完全可以通过。标准的哪个部分描述了它的使用?microC不兼容C99 (avr-gcc了解它,但生成警告)。
https://stackoverflow.com/questions/41537438
复制相似问题