當前位置:首頁 » 電腦資訊 » 為什麼頭文件除了函數名都被注釋

為什麼頭文件除了函數名都被注釋

發布時間: 2022-05-22 02:05:18

① 為什麼VC的頭文件裡面的函數只有聲明卻沒有定義

定義是有的,有一些定義被編譯成了二進制碼了,在頭文件中應該可以看到預處理把這些文件包含進去了,就像你要靜態調用dll文件就要用預處理把lib文件包含進去一樣,至於各個函數的功能,如果是純運算的那就是編譯器的製作者寫的,如果是對文件讀寫,創建窗口,這些就是調用了API函數

② keil自帶頭文件中為什麼只有庫函數的聲明,它們的具體定義呢

那些庫函數並沒有給出C語言的源程序,都編譯成了庫文件XX.LIB。用戶是看不到的,可能是為了保密吧。

③ 為什麼Win-Tc裡面的頭文件只有函數的定義卻沒有函數的實現

函數的實現已經被編譯成dll文件和lib,提供用戶調用!在頭文件中只給出函數的聲明,目的是為了系統對函數的參數類型進行行檢查!

④ 為什麼頭文件里已經包含了函數的聲明,調用還要聲明

定義只能有一次,而聲明的次數不限。任何標識符在使用前至少要有聲明,將聲明放在頭文件中,就可以在需要使用到標識符時隨時把頭文件包含進來即可。如果把定義放進頭文件中,那每包含一次頭文件,標識符就定義了一次,這樣在多文件的編譯連接時很容易出問題的。 包含其實就相當於把被包含文件的內容加入到其中,和用被包含文件中的內容替換掉對應的包含語句沒有區別。使用頭文件的好處就是免除了重復勞動的麻煩。 反正最終編譯器都是把被包含文件的內容合並到一塊才編譯的。所以這樣,LZ覺得運行時的調用跟調用任何一個函數有區別嗎。

⑤ C語言函數在頭文件里被聲明是什麼含義

一次問題這么多啊,只是聲明函數原型嘛,沒有什麼特別的意思
編譯器將會對所有已申明原型的函數,在實際調用的處做嚴格的參數類型+返回類型的合法性檢查,形參與實參類型、返回值類型與接收返回值的變數類型完全合法時沒有警告,否則 不合法的報錯,有損失數據的隱式的強制轉換則會有警告
如果沒有函數的原型申請,則實際調用函數時,編譯器不檢查調用格式是否合法的
除了通知編譯器做嚴格的合法性檢查之外,原型申明並不會把未引用的函數鏈接進最終程序中。
你所擔心的問題是不存在的,放心吧,編譯器沒那麼傻,編譯器有優化能力

⑥ C語言里有時候頭文件光是聲明了函數卻沒有定義函數,為啥就能用那

頭文件的函數的實現文件都在其他文件中,比如VC++就是在那些.LIB和.DLL文件中。這樣可以把實現文件轉化為LIB和DLL,就可以保護你的源代碼。而只留出來頭文件,給別人看,別人用頭文件作為介面,調用LIB或者DLL中的函數。

⑦ C語言如何實現頭文件不定義函數名,然後c文件里就不編譯該函數,或者其他能實現這樣效果的辦法

採用條件編譯即可。

在.h頭文件中加上

#if1
#defineFUNC_ENABLE
voidfun();
#endif

在.c中加上

#ifdefFUNC_ENABLE
voidfun(){printf("OK ");}
#endif

當我們不想編譯該函數時,加#if 1改為#if 0即可。

例子:

#include<stdio.h>

#if1
#defineFUNC_ENABLE
voidfun();
#endif

#ifdefFUNC_ENABLE
voidfun(){printf("OK ");}
#endif
intmain(void){
fun();
return0;
}

⑧ matlab裡面有些庫函數全是注釋,比如sum,但也能運行,那麼sum封裝到哪裡了

應該說,樓上的回答比較接近正確答案,但並非正確答案。

MATLAB 最底層、最核心的代碼,例如sum,並非如樓上所說那樣,使用mex指令生成mexw32或mexw64文件,而是直接封裝在主程序matlab.exe或者位於bin文件夾的某個dll文件中(根據版本不同,封裝所在的具體文件也不一樣,但可以肯定不是在mex文件中)。這類函數稱為內建函數(built-in function)。

你可以使用下面的命令:
which sum -all
看到sum函數的所在位置,很明顯,這是一個內建函數。至於sum.m文件,可以看到,處於被遮蔽(Shadowed)的狀態,調用的時候不會調用它,其存在的作用在於,用戶使用help sum命令的時候,可以為用戶提供一個簡短的幫助。內建函數的代碼以二進制形式存在,你不可能看到它是怎樣實現的。

有些函數是樓上所說的mex文件,比如gamma函數。使用mex的目的以及執行過程也基本如樓上所說,但有一點要糾正:mex文件並非「類似」dll文件,而就是一種特殊的dll文件。

至於toolbox,你的理解當然是不對的。matlab目錄下對應的是matlab基本模塊。因為matlab價錢很貴,正版一般只購買部分模塊,最少的情況下,可以只購買一個基本模塊。其他目錄都是各工具箱,有些最初是由外面的牛人開發,後來被MathWorks公司收購了,有些則從開始就是MathWorks公司自己編寫的。新版經常會增加一些新產品,但也有的產品因為和原開發者產生糾紛而不再包含在新版中(不計產品更名、合並這一類的調整)。

⑨ 為什麼不包含頭文件卻可以調用函數,誰來解釋

舊的C語言中,函數原型聲明不是必需的。
對於沒有聲明的函數,被認為是返回int類型

熱點內容
蘋果手機為什麼看騰訊視頻卡一下 發布:2025-05-16 03:09:17 瀏覽:985
為什麼我的蘋果手機不能快捷指令 發布:2025-05-16 03:06:26 瀏覽:670
為什麼e企學不能換手機登錄 發布:2025-05-16 03:01:35 瀏覽:99
女生為什麼接吻後眯眼睛 發布:2025-05-16 02:52:49 瀏覽:298
為什麼有些孩子這么招蚊子 發布:2025-05-16 02:52:40 瀏覽:793
u盤插到電腦裡面為什麼不顯示 發布:2025-05-16 02:35:41 瀏覽:80
監控器為什麼沒有回放文件 發布:2025-05-16 02:22:38 瀏覽:85
王者榮耀成年人為什麼限制時間 發布:2025-05-16 01:45:05 瀏覽:853
那為什麼吃東西要看心情呢 發布:2025-05-16 01:38:50 瀏覽:759
為什麼臉頰會有其他顏色 發布:2025-05-16 01:38:00 瀏覽:741