将单个字符作为定义传递给gcc
我有一个.c版文件,其中包含以下行:将单个字符作为定义传递给gcc,gcc,compilation,Gcc,Compilation,我有一个.c版文件,其中包含以下行: const uint8_t ID_SoftwareId[] = { 'A', 'B', '0', '1', '0', '\0'}; 我想通过定义将A和B传递到此文件。 我很累,但我通常会收到来自gcc的太多初始化者的警告 有什么想法吗?您是否尝试过: const uint8_t ID_SoftwareId[] = { DEFA, 'B', '0', '1', '0', '\0'}; 然后: 工作表单TM.概念验证: #define TOKENIZ
const uint8_t ID_SoftwareId[] = { 'A', 'B', '0', '1', '0', '\0'};
我想通过定义将A
和B
传递到此文件。
我很累,但我通常会收到来自gcc的太多初始化者的警告
有什么想法吗?您是否尝试过:
const uint8_t ID_SoftwareId[] = { DEFA, 'B', '0', '1', '0', '\0'};
然后:
工作表单TM.概念验证:
#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;
}
#1“test.c”
# 1 ""
# 1 ""
#1“测试c”
int main()
{
字符c=(*(“Q”);
返回0;
}
这是一个没有sdtlib的嵌入式应用程序,因此这不是一个选项。好的,我对它进行了编辑,以便更清楚地说明我的解决方案(当然)只使用预处理器(cpp)
# 1 "test.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test.c"
int main()
{
char c = (*("Q"));
return 0;
}