Xcode 中 C 语言中的预期标识符或 '(' 解析问题

Expected identifier or '(' parse issue in C language in Xcode

我正在处理堆栈上的 pop 和 push 方法。实际上,在这段代码中,我正在使用指针和 malloc 函数创建动态数组。然后我尝试使用 pop 和 push methods.But 将元素添加或删除到动态数组中,我得到了问题中的错误。我在代码中看不到任何错误。你能帮帮我吗?

这是我的 main.c 文件

#include <stdio.h>
#include <stdlib.h>
#include "main_header.h"
stack * init(){
    stack *s = (stack *) malloc(sizeof(stack));
    s->items = NULL;
    s->top = 0;
    s->count = 2;
    return s;
}

int pop(stack *s){
    if(s->items == NULL){
        printf("Items is empty.\n");
        return -1;
    }
    if(s->top<=s->count/4){
        int *items2 = (int *)malloc(sizeof(int)*s->count/2);
        
        for (int i = 0; i < (s->count/2); i++){
            items2[i] = s->items[i];
        }
        free(s->items); // burada "dizi" adındaki dizimiz dizi2 ile aynı yeri gösterdiğinde önceki 2 elemanlık dizi lost in space olacak bunu önlemek için free(dizi) diyerek o 2 elemanı bellekten siliyoruz.
        s->items = items2;
        s->count /= 2;

    }
    return s->items[--s->top];
}

void push(int a, stack *s){
    if(s->items == NULL){
        s->items = (int *)malloc(sizeof(int) * 2);
    }
    if(s->top>=s->count){
        int *items2 = (int *)malloc(sizeof(int)*s->count*2);
        for (int i = 0; i < s->count; i++)
            items2[i] = s->items[i];
        free(s->items); // burada "dizi" adındaki dizimiz dizi2 ile aynı yeri gösterdiğinde önceki 2 elemanlık dizi lost in space olacak bunu önlemek için free(dizi) diyerek o 2 elemanı bellekten siliyoruz.
        s->items = items2;
        s->count *= 2;
        
    }
    s->items[s->top++] = a;
}

void getItems(stack *s){
    printf("count: %d\n", s->count);
    for (int i = 0; i < s->top; i++) {
        printf("%d\n", s->items[i]);
    }
}

main_header.h 文件

#ifndef main
#define main

struct s {
    int count;
    int top;
    int *items;
    
};
typedef struct s stack;
stack * init(void);
int pop(stack *);
void getItems(stack *);
void push(int, stack *);
#endif

test_stack.c 文件

#include <stdio.h>
#include <stdlib.h>
#include "main_header.h"


int main(){
    
    stack *s1 = init();
    
    stack *s2 = init();
    
    for (int i = 0; i < 10; i++) {
        push(i*10, s1);
    }
    
    getItems(s1);
    
    for (int i = 0; i < 10; i++) {
        push(pop(s1), s2);
    }
    
    return 0;
}

在“main_header.h”中的#define main之后,“test_stack.c”中的代码int main(){int (){替代。这会导致编译器(不是 Xcode)报告的语法错误。

不要在“main_header.h”中使用main作为是否已经包含header文件的指标。使用其他您不会用于任何其他名称的名称,例如 main_hmain_header_h.

(Clang 是编译器。Xcode 是整体集成开发环境,可促进编译器的使用、组织项目文件、打开编辑器、维护项目选项等。)