如何正确定义char数组

时间:2010-02-04 05:00:29

标签: c macros c-preprocessor

有谁知道如何定义ASF_OBJECT_GUID_TEST以避免下面标记的行中的编译错误,或者我可以在哪里找到有关它的更多信息?

#define ASF_OBJECT_GUID_TEST {(char)0x75, (char)0xB2, (char)0x00}

void testFunction(char * testChar)
{

}

int main(int argc, char * argv[])
{
   char test[] = ASF_OBJECT_GUID_TEST;

   testFunction(test);
   testFunction(ASF_OBJECT_GUID_TEST); // <- fails to compile this line of code

   return 0;
}

3 个答案:

答案 0 :(得分:2)

{(char)0x75, (char)0xB2, (char)0x00}

是一个初始化列表,它本身不是C89中的数组(或指针)。

您可以使用:

#define ASF_OBJECT_GUID_TEST "\x75\xB2"

答案 1 :(得分:1)

你想要施放ASF_OBJECT_GUID_TEST,即

testFunction((char[])ASF_OBJECT_GUID_TEST)

#define ASF_OBJECT_GUID_TEST (char[]){(char)...}

答案 2 :(得分:0)

感谢。这正是我想要的。

假设我定义了许多字符串文字,它们有8个字符,每个字符串文字实际上是一个字节的值。有没有办法创建一个宏来修改这些字符串文字,方法是在每个字符之间添加一个“\ x”,如下所示?

#define TEST SOME_MACRO("33698149")

TEST将为"\x33\x69\x81\x49"