给计算器程序增加访问sin、exp与pow等库函数的操作。

#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 之前缺少类型声明