为什么#define NUM_EMPLOYEES 20;使用时会出现语法错误?

时间:2014-09-08 19:42:10

标签: c pointers

使用malloc函数作为指针时出现错误:

#define NUM_OF_EMPLOYEES 20;    
int *ids;

    ids = malloc(NUM_OF_EMPLOYEES*sizeof(int));

编译器给我一些关于冲突类型的错误初始化使指针中的整数没有强制转换而初始化元素不是常量而数据定义没有存储类 请有人回答我,找出所有这些警告的原因

2 个答案:

答案 0 :(得分:4)

#define NUM_OF_EMPLOYEES 20; /* Problem here */

在这里删除分号,它被解释为:

ids = malloc(20; * sizeof(int));
               ^ // Here is the semicolon...

答案 1 :(得分:1)

C宏预处理器不需要以分号结尾,这是您问题的根源。

此外,认为你总是要cckck malloc返回的值,可能没有足够的内存空间。

这是你想做的事情:

#include <stddef.h>
#define NUM_OF_EMPLOYEES 20

int         main()
{    
    int     *ids;

    if((ids = malloc(NUM_OF_EMPLOYEES * sizeof(int))) == NULL)
    {
        /* handle error */
    }
}