隐含的函数声明,预期';',','或')'

时间:2018-03-06 22:28:43

标签: c

编译器发出错误,如下所示。据我所知,常量和函数调用都是正确的。该程序计算三角形区域和周长,并使用5种不同的功能。任何帮助将不胜感激。

 program05.c:16:22: error: expected ‘;’, ‘,’ or ‘)’ before 'A'
 #define SIDE_1_LABEL 'A'
                      ^
program05.c:20:25: note: in expansion of macro ‘SIDE_1_LABEL’
 float getUserValue(char SIDE_1_LABEL, char SIDE_2_LABEL);
                         ^
program05.c: In function ‘main’:

…
#include <stdio.h>
#include <math.h>

#define SIDE_1_LABEL 'A'
#define SIDE_2_LABEL 'B'

void printInstructions();
float getUserValue(char SIDE_1_LABEL, char SIDE_2_LABEL);
float calculateArea(float side1, float side2);
float calculatePerimeter(float side1, float side2);
void printResults(float side1, float side2, float area, float perimeter);

int main()
{
    …

1 个答案:

答案 0 :(得分:3)

您写道:

#define SIDE_1_LABEL 'A'
#define SIDE_2_LABEL 'B'

float getUserValue(char SIDE_1_LABEL, char SIDE_2_LABEL);

这与写作完全相同:

float getUserValue(char 'A', char 'B');

这显然是无效的,因为&#39; A&#39;和&#39; B&#39;不是变量名。

如果您不知道 - 宏扩展的工作方式就像您在宏出现的任何地方完全复制粘贴宏定义一样。