郭小黑 发表于 2020-5-5 22:58:36

求助:为什么我用malloc该函数然后后面一直显示缺少)

# include <malloc.h>
# include <stdio.h>
# include <stdlib.h>
# include <math.h>

# define STACK_INIT_SIZE 100;
# define STACKINCREMENT 10;
typedef char ElemType;
typedef struct{
        ElemType * base;
        ElemType * top;
        int stacksize;
}sqstack;
void intstack(sqstack * s)
{
        s->base=(ElemType *)malloc(STACK_INIT_SIZE * sizeof (ElemType));
}

错误信息:error C2143: syntax error : missing ')' before ';'

zltzlt 发表于 2020-5-6 08:38:28

#define 是预处理命令,后面不用加分号

#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef char ElemType;
typedef struct
{
    ElemType *base;
    ElemType *top;
    int stacksize;
} sqstack;
void intstack(sqstack *s)
{
    s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));
}

sunrise085 发表于 2020-5-6 09:03:22

#define 后面一般是不需要添加分号的。
预处理命令是在预编译的时候直接替换的
你在#define中添加了分号,在替换掉 时候就变成了下面的样子
s->base=(ElemType *)malloc(100; * sizeof (ElemType));
在malloc中100后面有了分号,系统就认为语句结束了,然后发现缺少半个括号,就报错了
页: [1]
查看完整版本: 求助:为什么我用malloc该函数然后后面一直显示缺少)