我们可以在结构声明中使用#define常量作为数组大小吗?

vai*_*war 1 c arrays struct

我在C中做了以下几点

#define MAX_DATA_SIZE 500;

struct reliable_state {

  char dataBuffer[MAX_DATA_SIZE]; 

}
Run Code Online (Sandbox Code Playgroud)

即我想在结构声明中使用#define常量作为数组大小.但上面的代码给出了奇怪的错误

.c:36: error: expected ‘]’ before ‘;’ token
Run Code Online (Sandbox Code Playgroud)

那么有没有其他方法可以做到这一点?

Vla*_*mir 9

是的你可以,只需删除';' 在您的定义行中:

#define MAX_DATA_SIZE 500
Run Code Online (Sandbox Code Playgroud)

使用define,编译器实际上会"看到"您的结构定义为

char dataBuffer[500;];
Run Code Online (Sandbox Code Playgroud)

这显然是错误的.