【问题标题】:Pass single character to gcc as definition将单个字符作为定义传递给 gcc
【发布时间】: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


    【解决方案1】:

    你试过简单吗:

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

    然后:

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

    WorksForMeTM.

    【讨论】:

      【解决方案2】:

      概念证明:

      #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;
      }
      

      【讨论】:

      • 这是没有 sdtlib 的嵌入式应用程序,所以这不是一个选项。
      • 好的,我对其进行了编辑以更清楚地表明我的解决方案(当然)只使用了预处理器 (cpp)
      猜你喜欢
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多