你在mymin.c文件中調用printf函數
前提在你mymin.c文件頭包含了其他的文件而這個文件里有包含stdio.h文件
那你在mymin.c文件里可以不包含stdio.h文件看了下你文件的編寫
還是不合規范
幫你改下:/*ex_min.h*/#ifndef
_EX_MIN_H#define
_EX_MIN_H #include<stdio.h>int
min(int
n1,int
n2); #endif /*ex_min.c*/#include
"ex_min.h"int
min(int
n1,int
n2){
printf("調用min\n");
if(n1>n2)
return
n1; else
return
n2;} /*mymin.c*/#include
"ex_min.h" int
main(){
int
n1,n2,n3;
scanf("%d,%d",&n1,&n2);
n3=min(n1,n2);
printf("%d",n3);}
B. linux 下的內核頭文件放在哪裡
linux下的內核頭文件放在/usr/include/linux/和/usr/include/sys/
linux目錄樹:
scripts目錄
該目錄中不包含任何核心代碼,該目錄下存放了用來配置內核的腳本和應用程序源碼。
lib目錄
該目錄主要包含兩部分內容:gnuzip解壓縮演算法,用於在系統啟動過程中將壓縮的內核鏡像解壓縮;剩餘的文件用於實現一個C庫的子集,主要包括字元串和內存操作等相關函數。
mm目錄
該目錄包含了體系結構無關的內存管理代碼,包括通用的分頁模型的框架、夥伴演算法的實現和對象緩沖器slab的實現代碼。
include目錄
這個目錄包含了Linux源代碼目錄樹中絕大部分頭文件,每個體系架構都在該目錄下對應一個子目錄,該子目錄中包含了給定體系結構所必需的宏定義和內聯函數。
init目錄
該目錄中存放的是系統核心初始化代碼,內核初始化入口函數start_kernel就是在該目錄中的文件main.c內實現的。
kernel目錄
該目錄中存放的是Linux內核的最核心的代碼,用於實現系統的核心模塊,這些模塊包括:進程管理、進程調度器、中斷處理、系統時鍾管理、同步機制等。
arch目錄
該目錄中的每個子目錄中都與某種體系結構相對應,用於存放體系結構相關代碼,向平台無關的系統核心模塊提供所需的功能介面。每個體系結構對應的子目錄下通常至少包含以下幾個子目錄:kernel子目錄、lib子目錄、mm子目錄、boot子目錄。
系統次核心組件包括:
block目錄:用於實現塊設備的基本框架和塊設備的I/O調度演算法。
usr目錄:該目錄中的代碼為內核尚未完全啟動時執行用戶空間代碼提供了支持
ipc目錄:該目錄中的文件用於實現System V的進程間通信模塊。
driver目錄:用於存放各類設備的驅動程序。
sound目錄:存放了聲音系統架構,如Open Sound System(OSS)、Advanced Linux Sound Architecture(ALSA)的相關代碼和具體音效卡的設備驅動程序。
security目錄:存放了Security-Enhanced Linux(SELinux)安全框架的實現代碼
crypto目錄:該目錄中存放了相關的加密演算法的代碼。
Documentation目錄:存放了與內核相關的文檔。
net和fs目錄:包含linux內核支持的眾多網路協議和文件系統。
C. linux下,C語言頭文件在哪
一、 C標准庫頭文件,以及Linux的標准庫文件的對應頭文件,默認放在/usr/include下。 如圖:
標識出了最常用的幾個頭文件。
二、 自定義頭文件,或者集成頭文件,需要在編譯的時候指定。可以在命令行中指定,也可以在makefile中指定。
指定自定義頭文件路徑方式為:
-IPATH1 -IPATH2...
如當前目錄下的inc文件夾,指定為頭文件, 那麼在編譯a.c時,可以命令寫作:
gcc a.c -I./inc -o a.out
D. linux頭文件
linux 常用的庫文件在/usr/include/目錄中,一般都是在PATH變數里都設置好的。所以你想包含頭文件的時候,直接附上頭文件名就行了。例如常用的#include <stdio.h>。
E. 請問linux里頭文件與庫文件有什麼區別
頭文件中有函數的申明,庫文件實現函數的定義。
比如,printf函數。使用時應包括stdio.h,打開stdio.h你只能看到,printf這
個函數的申明,卻看不到printf具體是怎麼實現的,而函數的實現在相應的C庫
中。而庫文件一般是以二進制形式而不是C源文件形式提供給用戶使用的。程序
中包括了stdio.h這個頭文件。鏈接器就能根據頭件中的信息找到printf這個函
數的實現並鏈接進這個程序代碼段里。
總結起來就是,庫文件通過頭文件向外導出介面。用戶通過頭文件找到庫文件中
函數實現的代碼從而把這段代碼鏈接到用戶程序中去。
F. Linux 下如何快速查找到頭文件和函數定義
如:grep 「time_t」 /usr/include/*.h |grep 「typedef」可以查找到「typedef_time_t time_t;」
Locatekeyword.h 可以查找名為keyword 的頭文件所在地目錄樹
使用linux系統難免會忘記文件所在的位置,可以使用以下命令對系統中的文件進行搜索。搜索文件的命令為」find「;」locate「;」whereis「;」which「;」type「
linux下最強大的搜索命令為」find「。它的格式為」find <指定目錄> <指定條件> <指定動作>「;比如使用find命令搜索在根目錄下的所有interfaces文件所在位置,命令格式為」find / -name 'interfaces'「
使用locate搜索linux系統中的文件,它比find命令快。因為它查詢的是資料庫(/var/lib/locatedb),資料庫包含本地所有的文件信息。使用locate命令在根目錄下搜索interfaces文件的命令為」locate interfaces「
使用」whereis「命令可以搜索linux系統中的所有可執行文件即二進制文件。使用whereis命令搜索grep二進制文件的命令為」whereis grep「。
使用which命令查看系統命令是否存在,並返回系統命令所在的位置。使用which命令查看grep命令是否存在以及存在的目錄的命令為」which grep「
使用type命令查看系統中的某個命令是否為系統自帶的命令。使用type命令查看cd命令是否為系統自帶的命令;查看grep 是否為系統自帶的命令。
G. Linux下C編程頭文件
你在mymin.c文件中調用printf函數
前提在你mymin.c文件頭包含了其他的文件而這個文件里有包含stdio.h文件
那你在mymin.c文件里可以不包含stdio.h文件
看了下你文件的編寫
還是不合規范
幫你改下:
/*ex_min.h*/
#ifndef
_ex_min_h
#define
_ex_min_h
#include<stdio.h>
int
min(int
n1,int
n2);
#endif
/*ex_min.c*/
#include
"ex_min.h"
int
min(int
n1,int
n2)
{
printf("調用min\n");
if(n1>n2)
return
n1;
else
return
n2;
}
/*mymin.c*/
#include
"ex_min.h"
int
main()
{
int
n1,n2,n3;
scanf("%d,%d",&n1,&n2);
n3=min(n1,n2);
printf("%d",n3);
}
H. linux系統的頭文件在哪個目錄
一般標準的頭文件路徑為:
/usr/local/include
/usr/lib/gcc-lib/target/version/include
/usr/target/include
/usr/include
通過 gcc -v *.c 看編譯時具體過程,裡面有頭文件搜索路徑顯示
I. linux查看包含的頭文件源文件
linux下的內核頭文件放在/usr/include/linux/和/usr/include/sys/linux目錄樹:scripts目錄該目錄中不包含任何核心代碼,該目錄下存放了用來配置內核的腳本和應用程序源碼。lib目錄該目錄主要包含兩部分內容:gnuzip解壓縮演算法,用於在系統啟動過程中將壓縮的內核鏡像解壓縮;剩餘的文件用於實現一個C庫的子集,主要包括字元串和內存操作等相關函數。mm目錄該目錄包含了體系結構無關的內存管理代碼,包括通用的分頁模型的框架、夥伴演算法的實現和對象緩沖器slab的實現代碼。include目錄這個目錄包含了Linux源代碼目錄樹中絕大部分頭文件,每個體系架構都在該目錄下對應一個子目錄,該子目錄中包含了給定體系結構所必需的宏定義和內聯函數。init目錄該目錄中存放的是系統核心初始化代碼,內核初始化入口函數start_kernel就是在該目錄中的文件main.c內實現的。kernel目錄該目錄中存放的是Linux內核的最核心的代碼,用於實現系統的核心模塊,這些模塊包括:進程管理、進程調度器、中斷處理、系統時鍾管理、同步機制等。arch目錄該目錄中的每個子目錄中都與某種體系結構相對應,用於存放體系結構相關代碼,向平台無關的系統核心模塊提供所需的功能介面。每個體系結構對應的子目錄下通常至少包含以下幾個子目錄:kernel子目錄、lib子目錄、mm子目錄、boot子目錄。系統次核心組件包括:block目錄:用於實現塊設備的基本框架和塊設備的I/O調度演算法。usr目錄:該目錄中的代碼為內核尚未完全啟動時執行用戶空間代碼提供了支持ipc目錄:該目錄中的文件用於實現SystemV的進程間通信模塊。driver目錄:用於存放各類設備的驅動程序。sound目錄:存放了聲音系統架構,如OpenSoundSystem(OSS)、(ALSA)的相關代碼和具體音效卡的設備驅動程序。security目錄:存放了Security-EnhancedLinux(SELinux)安全框架的實現代碼crypto目錄:該目錄中存放了相關的加密演算法的代碼。Documentation目錄:存放了與內核相關的文檔。net和fs目錄:包含linux內核支持的眾多網路協議和文件系統。
J. linux 頭文件
你也說了pfm_set_options這個函數,他包含的頭文件里都是.h文件,而pfm_set_options(pfmlib_options_t *opt) 該函數的實現卻在一個c文件中
說明頭文件里的函數都是在相應的c文件中實現的啊
然後將這個實現的函數放在頭文件中,這樣把這個頭文件包含在其他的c文件中,這樣其他的c文件就可以使用這個函數而不怕找不到了
打個比方:你生產了10種游戲(10個函數實現,在.c文件中實現)
然後把這10個游戲的名字寫在一張紙上(紙就是.h文件)
最後你就可以拿這張紙給別人 然後告訴那個人:我有這些玩具你想要哪一個就給你哪一個