#include
#include
#include
#include
#include "share.h"
#define MAXOP 100 /* 操作数的最大长度 */
#define MAXCMMD 10 /* 命令的最大长度 */
int getop(char[]);
void push(double);
double pop(void);
void get_rp_cal_cmmd(void);
void match_cmmd(char cmmd[]);
/* 逆波兰计算器 */
int main(void) {
get_rp_cal_cmmd();
return 0;
}
/* get_cp_cal_cmmd函数:解析输入的命令 */
void get_rp_cal_cmmd(void) {
int i;
int type;
char op[MAXOP];
char cmmd[MAXCMMD];
double op2;
i = 0;
while ((type = getop(op)) != EOF) {
switch (type) {
case '-':
op2 = pop();
push(pop() - op2);
break;
case '\n':
if (i == 0)
printf("\t%.8g\n", pop());
else {
cmmd[i] = '\0';
i = 0;
match_cmmd(cmmd);
}
break;
default:
if (i < MAXCMMD)
cmmd[i++] = type;
else {
cmmd[i] = '\0';
i = 0;
printf("error: command %s...too long\n", cmmd);
}
break;
}
}
}
void match_cmmd(char cmmd[]) {
double op2;
double pow(pop());这边错了
if (!strcmp(cmmd, "sin")) {
printf("\t%.8g\n", sin(pop()));
} else if (!strcmp(cmmd, "exp")) {
printf("\t%.8g\n", exp(pop()));
} else if (!strcmp(cmmd, "pow")) {
op2 = pop();
printf("\t%.8g\n", pow(pop(), op2));
}/*else if...*/else {
printf("error: command not known\n");
}
}
error: expected declaration specifiers or ‘...’ before ‘pop’
double pow(pop());这边错了
这句话很怪异啊。又不是函数调用,又不是函数申明
如果是函数调用,写成 double x = pow(pop()); 应该定义一个double变量啊。否则会认为是函数定义的。但显然这里不会定义一个pow函数吧。如果是,那括号里应该是参数定义,而不是pop()函数啊
error: expected declaration specifiers or ‘...’ before ‘pop’
这个已经说明了,doubule pow(********),编译系统认为是函数声明,参数不能为pop,pop 之前缺少类型声明