#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...
}
//...
當前標題:c語言宏多個函數 c語言中多個函數怎么運行
當前URL:http://m.kartarina.com/article38/dogissp.html
成都網站建設公司_創新互聯,為您提供App開發、虛擬主機、微信公眾號、搜索引擎優化、定制網站、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯