将单个字符作为定义传递给gcc

时间:2011-10-04 07:51:42

标签: gcc compilation

我的version.c文件包含以下行:

const uint8_t ID_SoftwareId[]   = { 'A', 'B', '0', '1', '0', '\0'};

我想通过定义将AB传递到此文件中。 我累了few thigs,但我通常会收到来自gcc的Too many initializers警告。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试过简单:

const uint8_t ID_SoftwareId[]   = { DEFA, 'B', '0', '1', '0', '\0'};

然后:

gcc -DDEFA=\'A\' ...

WORKSFORME TM

答案 1 :(得分:0)

概念证明:

#define TOKENIZE(x) #x
#define SINGLECHAR(x) (*(TOKENIZE(x)))

int main()
{
    char c = SINGLECHAR(DEFINITION);
    return 0;
}

编译并运行:

cpp -DDEFINTION=Q test.c

输出

# 1 "test.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test.c"



int main()
{
 char c = (*("Q"));
 return 0;
}