有谁知道如何定义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;
}
答案 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"