我在编写的 C 程序中遇到此错误:
progra10.c:48:25: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
#define LAST_INDEX ARRAY_SIZE - 1
和
program10.c:47:25: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
#define ARRAY_SIZE 20
^
program10.c:48:25: note: in expansion of macro ‘DATA_SIZE’
#define LAST_INDEX ARRAY_SIZE - 1
^~~~~~~~~~
program10.c:64:42: note: in expansion of macro ‘LAST_INDEX’
int sequential_search(int seq_data, int LAST_INDEX, int search_target,
我使用 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 中的函数调用参数中使用 LAST_INDEX 时都会重复该错误。我知道我的程序的其余部分有错误,但编译甚至没有显示它们,让我相信它无法克服这个问题。
函数如下所示:
函数原型(prototype):
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
被定义为宏,因此会扩展为表达式。函数参数的声明符必须是单个标识符(您要为参数指定的名称),而不是表达式。
关于C,符号常量定义中出现错误(可能在函数参数中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58795904/