【发布时间】:2012-09-18 15:19:26
【问题描述】:
我正在为学校做一个 CS 项目,但我似乎遇到了这个非常无用的奇怪错误。我和我的搭档似乎无法弄清楚。
它在第一个'*'标记之前显示“UArray2.h:18: error: expected '=', ',', ';', 'asm' or 'attribute' before '*' token”函数声明我的 .h 文件 (UArray2_new)。
在函数声明的每一行中,在‘*’标记之前重复“错误:预期的‘)’。有任何想法吗?我在我的里面包含了一个空白的 main,所以你可以看到它不可能是一个编译问题。我使用“gcc -Wall -Wextra -Werror UArray2.c”进行编译。
//UArray2.h
#include <stdlib.h>
#include <stdio.h>
#ifndef UARRAY2_INCLUDED
#define UARRAY2_INCLUDED
struct UArray2_T{
int width, height;
};
extern UArray2_T * UArray2_new(int height, int width, int size);
extern void UArray2_free(UArray2_T * uarray2);
extern void * UArray2_at(UArray2_T * uarray2, int column, int row);
extern int UArray2_size(UArray2_T * uarray2);
extern int UArray2_columns(UArray2_T * uarray2);
extern int UArray2_rows(UArray2_T * uarray2);
static int UArray2_index(UArray2_T * uarray2, int col, int row);
#endif
这是 .c 文件
//UArray.c
#include <stdlib.h>
#include <stdio.h>
#include "UArray2.h"
int main()
{
return 0;
}
UArray2_T * UArray2_new(int height, int width, int size)
{
T newArray=malloc(sizeof(UArray2_T));
newArray->height=height;
newArray->width=width;
(void) size;
return newArray;
}
void UArray2_free(UArray2_T * uarray2)
{
(void) uarray2;
//need to write
}
void * UArray2_at(UArray2_T * uarray2, int column, int row)
{
(void) uarray2;
int index=UArray2_index(uarray2, column, row);
(void) index;
//if(index>0 && index<=column*row)
//return UArray_at(uarray2->UArray, index);
//else
//throw an error
char * k="hi"; //dummy variables
return k;
}
int UArray2_size(UArray2_T * uarray2)
{
//UArray_size(uarray2->UArray);
return 0;
}
int UArray2_columns(UArray2_T * uarray2){
return uarray2->width;
}
【问题讨论】: