新聞中心
C語言 定義使用void函數(shù)的時(shí)候 編譯為什么總是警告
函數(shù) 和 函數(shù)聲明 寫的不一致,導(dǎo)致類型沖突。
創(chuàng)新互聯(lián)建站專注于橫峰企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站定制開發(fā)。橫峰網(wǎng)站建設(shè)公司,為橫峰等地區(qū)提供建站服務(wù)。全流程按需搭建網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
比如:頭文件里寫的是:
int do_something();
而c文件里寫的是:
void do_something(){
}
另外,c語言里函數(shù)的返回值默認(rèn)是int。所以如果函數(shù)的返回值并不是int,那么一定要聲明出來,否則也可能產(chǎn)生類型沖突的錯(cuò)誤。
c語言主函數(shù)中有一段用大括號括起來了,其中定義的變量與主函數(shù)變量沖突,求解釋?
一對花括號理里面叫做語句塊 在其中的定義的變量在其括號可以使用
void main()// int main()才是正確的
{
int k=1,m=2; //使用于大括號
m++;
{ //語句塊看著獨(dú)立單元進(jìn)行了
int k=0;// 使用于這個(gè)括號中
k+=m*2;
printf("%d,%d#",k,m);
k++;
}
printf("%d,%d#",k,m);//用大括號的語句
} //
C語言函數(shù)調(diào)用問題,下面是例子。當(dāng)形參和實(shí)參定義的變量重名的時(shí)候,會不會發(fā)生沖突?為什么?
不會發(fā)生沖突。但主要是你不要被其困惑就是真的要做的了。
因?yàn)檫@是C語言設(shè)計(jì)中的一個(gè)應(yīng)用。作用域的應(yīng)用含義。
函數(shù)所帶參數(shù)的作用域只在該函數(shù)體中起到作用。就相當(dāng)于,函數(shù)內(nèi)部聲明的兩個(gè)變量。是局部變量。
而主函數(shù)中的變量定義又是主函數(shù)當(dāng)中的作用域。主函數(shù)中變量的作用域是全局變量。
兩者自然不會沖突。
如何解決C語言,函數(shù)名與宏沖突
如果二者作用域沒有交叉,那么可以把函數(shù)名定義為static。
或者在使用宏的地方,不要聲明該函數(shù)。
否則,只能改掉其中一個(gè)名字。
推薦宏名用全大寫字母。
函數(shù)名用全小寫字母或者單詞開頭字母大寫。 這樣就不會沖突了。
而且根據(jù)名字 一眼就可以看出來是宏還是函數(shù)。
文章標(biāo)題:c語言定義函數(shù)沖突 c語言函數(shù)定義時(shí)涉及的三個(gè)基本要素
分享地址:http://fisionsoft.com.cn/article/doghoss.html