#includestdio.h
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了新乐免费建站欢迎大家使用!
void fun1(){}
void fun2(){}
void fun3(){}
void fun4(){}
void fun5(){}
void fun6(){}
void fun7(){}
void fun8(){}
void call(char choice)
{
switch(choice)
{
case '1':
fun1();
break;
case '2':
fun2();
break;
case '3':
fun3();
break;
case '4':
fun4();
break;
case '5':
fun5();
break;
case '6':
fun6();
break;
case '7':
fun7();
break;
case '8':
fun8();
break;
defult:
break;
}
}
int main(void)
{
char choice[8]={0};
char ch;
int i=0;
printf("请输入你选择要运行的函数编号(1~8):");
ch=getchar();
while(ch!='\n')
{
if(ch='1'ch='8')
{
choice[i]=ch;
i++;
}
}
for(int j=0;ji;j++)
{
call(choice[j]);
}
return 0;
}
函数式宏(function-like macro)较之对象式宏可以进行更复杂的代换。
函数式宏 sqr 是在编译时展开并填入程序的,因此 只要是能用双目运算符 * 进行乘法计算的数据类型,都能使用函数式宏 。
函数定义则需为每个形参都定义各自的数据类型,返回值的类型也只能为一种。就这点而言,函数较为严格。
函数为我们默默无闻地进行了一些复杂处理,如:
而函数式宏所做的工作只是宏展开和填入程序,并不进行上述处理。
根据以上特征, 函数式宏或许能使程序的运行速度稍微提高一点,但是程序自身却有可能变得臃肿 。
函数式宏在使用上必须小心谨慎。例如, sqr(a++) 展开后 ((a++) * (a++)) 。每次展开, a 的值都会自增两次。在不经意间表达式被执行了两次,导致程序出现预料之外的结果,我们称这种情况为宏的 副作用(side effect) 。
1、c语言中的宏属于c语言预处理命令,不是c语言的组成部分,也不是c语句;是一种字符串替换操作;使用#define来定义,分为不带参数的宏和带参数的宏。
2、不带参数的宏:#define 标识符 字符串
假如定义:
#define PI 3.1415926
那么以后用到3.1415926的地方写PI就可以了。
3、带参数的宏:#define 标识符(参数表) 字符串
假如定义:
#define PI 3.1415926
#define S(r) PI*r*r
那么以后求圆的面积的时候可以用S(5)形式表示,它表示3.1415926*5*5。
4、多个c语言程序文件的同时使用:(多个同时使用的c文件中只能有一个main()函数)
1)多个c语言程序文件间外部函数的调用:
先用extern声明外部函数,然后调用,例如:
extern prt();//声明一个外部函数prt()
prt();//调用外部函数prt()
2)生成可执行文件的方法:
a、对多个文分别进行编译,然后进行连接生成可执行文件。
b、用#include "文件名"来包含所要的文件,然后一次性编译连接生成可执行文件。
#include stdio.h
#include "1.c"
int main()
{
extern prt();//声明一个外部函数prt()
prt();//调用外部函数prt()
}
c、在工程中同时打开1.c文件:
#include stdio.h
int main()
{
extern prt();//声明一个外部函数prt()
prt();//调用外部函数prt()
}
d、1.c文件内容:
void prt()
{
printf("1.c file");
}
如果是用纯C语言来写,把所有函数声明放在最前面,然后函数定义好,这样的函数是公有的,可以随意调用。然后主函数不能少,这样子的话,所有函数包括主函数的前后顺序可随意。
void fun1();
void fun2();
//...
int main()
{
return 0;
}
void fun1()
{
//code...
}
void fun2()
{
//code...
}
//...