【发布时间】:2011-11-30 11:28:51
【问题描述】:
我有带有以下行的 version.c 文件:
const uint8_t ID_SoftwareId[] = { 'A', 'B', '0', '1', '0', '\0'};
我想通过定义将A 和B 传递到这个文件中。
我厌倦了fewthigs,但我通常会收到来自 gcc 的 Too many initializers 警告。
有什么想法吗?
【问题讨论】:
标签: gcc compilation
我有带有以下行的 version.c 文件:
const uint8_t ID_SoftwareId[] = { 'A', 'B', '0', '1', '0', '\0'};
我想通过定义将A 和B 传递到这个文件中。
我厌倦了fewthigs,但我通常会收到来自 gcc 的 Too many initializers 警告。
有什么想法吗?
【问题讨论】:
标签: gcc compilation
你试过简单吗:
const uint8_t ID_SoftwareId[] = { DEFA, 'B', '0', '1', '0', '\0'};
然后:
gcc -DDEFA=\'A\' ...
WorksForMeTM.
【讨论】:
概念证明:
#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;
}
【讨论】: