Ⅰ c語言自己寫的頭文件裡面的函數定義為什麼要加static
你的先弄明白頭文件被包含了之後,編譯器會在當前文件把你包含的頭文件版展開,而當多於兩個源權文件包含相同的頭文件的時候,如果不加staic的話,頭文件中的同一個函數就相當於在整個程序中被定義了多次,所以肯定會報錯。static會把它定義為本地函數,將其作用域限制在本文件內,所以需要加上static關鍵字。
如果不加static的話,可以用宏定義的方式實現的,然後在每個文件中使用#ifdef和#ifndef以及#endif~
Ⅱ C語言中定義頭文件和函數調用有什麼區別和聯系
通常把函數定義在頭文件中
比如有一個函數 int ShowMeGirl();
這個函數回在答 定義在 girl.h文件中,
你要用這個函數時,就要包含這個文件girl.h,要不然找不到這個函數啊。
再來說:
#include <stdio.h>
int main()
{
printf("hello girl..");
return 1;
}
//printf這個函數定義在stdio.h這個文件中,所以要包含這個文件
通常stdio.h是默認已經包含的。
Ⅲ 請問C語言怎麼把函數放在頭文件裡面呢
你可以創建頭文件,頭文件是以".h"結尾的文件名,而main()函數所在的文件則是回以".c"結尾的,".c"後綴的答文件內部,也就是main函數內部主要是調用各個功能函數,函數的聲明部分一般放在在".h"後綴的頭文件中,這樣是為了實現C語言的結構化,創建好了頭文件,就可以在頭文件內部實現各個函數的聲明,具體的一個完整的函數聲明可以用下面的加法函數例子來說明 :
//include<add.h>,頭文件名為add的頭文件
float add(float x,float y) /*定義add函數*/
{
float z;
z=x+y;
return(z);
}
這個函數的返回值是float(浮點型或是實型),add為函數名,調用的形參都是float類型,數目為兩個形參x,y。x,y是接受main()函數中的實參傳過來的具體值,然後進行運算。main函數調用只要這樣就可以:
#include<stdio.h>
#include<add.h>
main()
{
float c;
c=add(4.6,5.4);
printf("x+y=%d",c);
}
Ⅳ c語言中頭文件中定義的函數為什麼效率那麼高
1、C標准庫的函數只是一些基本功能的封裝,很多的效率並不是那麼高效,比如strstr函數演算法用的樸素的模式匹配,對於長的字元串,效果差勁。當然有的還是可以的,畢竟大多用了比較經典的演算法,當對時間有需求選擇使用。
2、C語言庫基本大部分都是用C語言寫的,某些對於時間上有控制那就用匯編語言來寫的,不過比較少。你看到的估計是被打包過的dll文件或者lib文件包吧。。這些是實現源文件後被編譯成二進制代碼了的代碼文件打包成的,然後你再去看要麼翻譯成匯編要麼就還是二進制。。。
3、memset源碼:
/*memsetfunction*/
#include<string.h>
void*(memset)(void*s,intc,size_tn)
{ /*storecthroughoutunsignedchars[n]*/
constunsignedcharuc=c;
unsignedchar*su;
for(su=s;0<n;++su,--n)
*su=uc;
return(s);
}
sizeof不是函數。。是操作符,同「+」、「-」等一樣。。編譯器通過匯編語言對C語言的定義進行支持。。
Ⅳ 怎麼查看C/C++頭文件中各函數的定義
1、裝個Visual.Assist.X插件,點擊到函數名可以轉到頭文件及定義,不過有的函數不內是開源的,只能看到聲明。容
2、函數是指一段在一起的、可以做某一件事兒的程序。也叫做子程序、(OOP中)方法。一個較大的程序一般應分為若干個程序塊,每一個模塊用來實現一個特定的功能。所有的高級語言中都有子程序這個概念,用子程序實現模塊的功能。在C語言中,子程序的作用是由一個主函數和若干個函數構成。由主函數調用其他函數,其他函數也可以互相調用。同一個函數可以被一個或多個函數調用任意多次。
3、C語言是在70年代初問世的。一九七八年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的「THE C PROGRAMMING LANGUAGE」一書。通常簡稱為《K&R》,也有人稱之為《K&R》標准。但是,在《K&R》中並沒有定義一個完整的標准C語言,後來由美國國家標准學會在此基礎上制定了一個C 語言標准,於一九八三年發表。通常稱之為ANSI C。
Ⅵ 函數聲明、函數定義都要放在頭文件中嗎,還是一個放在.c裡面,一個放在.h裡面
你要做這個事來情,要分成3部分:源首先,寫頭文件。裡面存放你函數的聲明。其次,寫.c文件,裡面放你函數的實現,也就是函數定義,有大括弧的函數體的.最後,寫你的main函數的.c文件。函數定義可以也放在頭文件中,那樣是可以的,但是如果你的函數體積特別大,而調用次數又特別多,會導致編譯的時候代碼直接全部展開——導致代碼體積大!