【问题标题】:C language. Declaration of the array, size of which is given by the macros #defineC语言。数组的声明,其大小由宏 #define 给出
【发布时间】:2012-10-04 01:15:52
【问题描述】:

我想知道为什么当我尝试使用 #define 声明数组时,编译器会出错,而使用文字而不是大小允许我这样做。

some_name.h:

#define size 10;

int* waitingBench[size];

【问题讨论】:

    标签: c arrays macros declaration c-preprocessor


    【解决方案1】:

    您所拥有的将被预处理为:

    int* waitingBench[10;];
    //                  ^ notice this guy!
    

    #define 中删除分号。

    (而size#define 的一个非常糟糕的标识符。)

    【讨论】:

    • +2 获取关于size 的注释 :)
    【解决方案2】:

    从您的定义中删除 ;。正如您目前拥有的那样,这与您知道不正确的 int* waitingBench[10;]; 等效。

    宏定义不是 C 指令,因此它们不需要以分号结束(并且它们不能超过一行,除非使用了续行反斜杠,并且它们不能与其他东西共享该行) .

    【讨论】:

    • 天啊!!!非常感谢,我已经花了很多时间试图弄清楚这是错误的。谢谢!!))
    【解决方案3】:

    删除“;”最后:

    #define size 10
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多