int main(int argc, char *argv[]) { if (argc < 2) { fprintf(stderr, "miss args\n"); usage(argv[0]); exit(1); } struct calc_info *q = (struct calc_info *)malloc(sizeof(*q)); if (q == NULL) { perror("malloc"); goto err_malloc; } calc_init(q); num_t ret = 0; int i; for (i = 1; i < argc; ++i) { ret = q->calc(q, argv[i]); printf("\n---%s = %d----\n", argv[i], ret); } calc_destroy(q); free(q); return 0; err_malloc: return -1; }
int main(int argc, char *argv[]) { assert(argc >= 2); struct calc_info *pcalc = (struct calc_info *) malloc(sizeof(*pcalc)); assert(pcalc != NULL); calc_init(pcalc); printf("%s = %d\n", argv[1], pcalc->parser(pcalc, argv[1])); calc_destroy(pcalc); free(pcalc); return 0; }
int main(int argc, char *argv[]) { struct calc *this = NULL; //const char *default_expr = \ "(--1 ++2 + +-3 * (1 + 1)) * 2"; const char *default_expr = "1 -+- 2"; if (argc == 1) { this = calc_init(this, default_expr); printf("%s = %d\n", default_expr, this->analyze(this, default_expr)); } else if (argc == 2) { this = calc_init(this, argv[1]); printf("%s = %d\n", argv[1], this->analyze(this, argv[1])); } else { printf("sorry, 最多只能传递一个参数!\n使用方法:可执行文件 要进行运算的表达式\n"); return 1; } calc_destroy(this); return 0; }