C、 在符号常量定义(可能在函数参数中)中获取错误

C、 在符号常量定义(可能在函数参数中)中获取错误,c,gcc,syntax-error,constants,C,Gcc,Syntax Error,Constants,我在编写的C程序中遇到了以下错误: progra10.c:48:25: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant #define LAST_INDEX ARRAY_SIZE - 1 及 我将GCC编译器与以下命令一起使用: gcc-Wall-ansi-oprogram10.exe program10.c-lm 这是错误似乎所指的代码: #define COURSE_NUMBER "C Programming" /* Clas

我在编写的C程序中遇到了以下错误:

progra10.c:48:25: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
#define LAST_INDEX ARRAY_SIZE - 1

我将GCC编译器与以下命令一起使用:

gcc-Wall-ansi-oprogram10.exe program10.c-lm

这是错误似乎所指的代码:

#define COURSE_NUMBER "C Programming" /* Class */
#define PROGRAM_NUMBER 10 /* Program Number */
#define PROGRAMMER_NAME "Name" /* Programmer's Name */
#define ARRAY_SIZE 20 /* Size of the array */
#define LAST_INDEX ARRAY_SIZE - 1 /* The last index in the array */
我不知道它为什么会导致那个错误。我已经检查了打开的注释、选项卡、打开的字符串以及其他内容,但我无法修复此错误。编译时,此错误是唯一的错误,只是每次在main中的函数调用参数中使用最后一个_索引时都会重复此错误。我知道我的程序的其余部分有错误,但编译甚至没有显示它们,这让我相信它无法克服这些错误

函数如下所示:

功能原型:

int  sequential_search(int seq_data, int LAST_INDEX, int search_target, 
                                                   int target_location);
函数调用:

sequential_search(seq_data, LAST_INDEX, search_target, target_location);
功能定义:

int sequential_search(int seq_data, int LAST_INDEX, int search_target,
                                                    int target_location)

谢谢你的帮助

问题在于,您试图声明一个函数参数调用LAST_INDEX,但LAST_INDEX定义为宏,因此扩展为表达式。函数参数的声明符必须是一个标识符,即您要给参数的名称,而不是表达式。

错误消息指的是行号,如47、48、64,但问题中没有那么多代码。请阅读关于如何创建MCVE或MRE或任何现在使用的名称;MCVE已经好了五年多了,它不需要更换或SSCCE。合理问题的一个指标是,从问题中复制代码会生成所声称的警告。你还没有做到。你在函数声明中使用宏,即在函数原型和函数定义中使用宏。函数声明会在预处理器完成后,像int sequential_searchint seq_data、int 20-1、int search_target、int target_location这样向编译器进行查询。仅在调用函数时使用该宏,而在声明函数时不在参数列表中使用该宏。
int sequential_search(int seq_data, int LAST_INDEX, int search_target,
                                                    int target_location)