- 论坛徽章:
- 0
|
请教各位,C语言什么情况下函数需要预先申明才可使用。
精简一下,看下面
头文件是个"stack.h"这个没问题,是个自己写的double行的栈;
stack里面的函数
void InitStack(Stack *,int);初始化
void push(Stack *,Type);压战
Type pop(Stack *,Type);弹出
void ClearStack(Stack *);清空
void DestroyStack(Stack *);销毁
int StackEmpty(Stack); 判断是否空
Type GetTop(Stack);栈顶元素
/* changeRMB.h 头文件人民币转换程序*/
里面的函数
int Yxsz(char *arr)/*判断输入是否为有效的数字*/
void Yxws(char **arr) /*判断输入的有效位数小数点前后去零,只保留有效部分*/
void Fenjie(char **hd,char **rd,char *num) /*分解小数点前与小数点后*/
void Head(char *head,char **headok[])/*处理整数部分*/
void Point(char *rear,char **rearok[]) /*/处理小数部分*/
void Value(char *num)/*/最终结果*/
/*主程序calculator.c*/
函数如下
int GetTwoOperand(Stack *s,Type *num1,Type *num2) /*从栈中取得两个操作数*/
void Compute(Stack *s,char ch) /*用去的的两个操作书进行计算结果再压入栈中*/
void Run(Stack *s,char *num) /*判断字符,把操作数压入栈,遇到操作符进行运算,斌且输出结果*/
void Zhuan(int num,int jz) /*10进制数到任意进制的转换*/
int Menu(void) /*简单菜单*/
void transform(char *ps, char *pe) /*转化为后缀表达式*/
int IN(char ch) /*判断是否是字符*/
int precede(char c, char ch) /*判断字符优先级*/
void enter(char exp[]) /*输入处理*/
说明一下,头文件里的函数,和main里的函数全部没有申明,都是直接定义使用。
但是就下面3个函数必须提前申明,否则编译出现警告信息。
void transform(char *ps, char *pe) /*转化为后缀表达式*/
int IN(char ch) /*判断是否是字符*/
int precede(char c, char ch) /*判断字符优先级*/
就上面这3个,所以我问这个问题的意思就是,如果严格来说应该是先申明,定义,使用;
但是我不理解的是别的函数没有申明可以使用,为什么这3个函数就必须要申明,否则出现警告信息。
我的表达能力实在差,上面就是我的问题。 |
|