用C ++定义二进制宏

时间:2009-07-22 19:27:24

标签: c++ c-preprocessor

有人可以解释为什么会发生以下错误:

    #define bla "\xA"
    char a [2] = {0};
    memcpy (a,bla,1); // a[0] = 0x0a <- Correct
    //a[1] = bla;     // '=' : cannot convert from 'const char [2]' to 'char'

谢谢,

RM

2 个答案:

答案 0 :(得分:5)

类型不同:a [1]是char,“\ xA”是char数组。

在C ++和C中,用双引号括起来的东西(包括什么都没有)是一个char数组。

答案 1 :(得分:4)

尝试:

#define bla '\xA'

虽然这会阻止memcpy工作。