首页 > 解决方案 > 错误:C 中“->”标记之前的预期标识符或“(”

问题描述

我有一个结构,位于我的头文件中,我想将其成员设置为我在 main() 函数中拥有的值,即“大小”和“上限”。我得到以下信息:error: expected identifier or ‘(’ before ‘->’ token struct Array->size = size;对于带有“cap”的行,我也得到了同样的错误。

我已经提供了我的头文件、结构所在的位置以及我的函数定义文件。

头文件:

#include <stdio.h>

struct Array {
  unsigned int size;
  unsigned int cap;
  int data;
};

struct Array *newArray(unsigned int size, unsigned int cap); //Prototype

函数定义文件:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

struct Array *newArray(unsigned int size, unsigned int cap) {

  struct Array->size = size;
  struct Array->cap = cap;

}

我故意不将我的头文件包含在我的函数定义文件中,因为我将它包含在我的主文件中。两次包含 header.h 会给我更多错误/警告。

有人可以帮忙吗?谢谢

标签: cstruct

解决方案


您正在尝试将某些内容分配给确实有效的类型。

struct Array *newArray(unsigned int size, unsigned int cap) {

   struct Array->size = size;
   struct Array->cap = cap;

}

以下是修复代码的方法:

struct Array *newArray(unsigned int size, unsigned int cap) {
   struct Array *arr = malloc(sizeof(struct Array));
   if(!arr)
       return NULL;

   arr->size = size;
   arr->cap = cap;
   
   return arr;
}

推荐阅读