1樓:匿名使用者
1、函式宣告由函式返回型別、函式名和形參列表組成。形參列表必須包括形參型別,但是不必對形參命名。這三個元素被稱為函式原型,函式原型描述了函式的介面。
定義函式的程式設計師提供函式原型,使用函式的程式設計師就只需要對函式原型編輯即可。
2、比如: 【返回型別】 函式名(引數1型別 引數1,引數2型別 引數2,……);
例項:bool swap(int a,int b);
例子中函式的返回型別為bool型,兩個引數都是int型,一個名稱為a ,一個名稱為b
函式宣告中的形參名往往被忽略,如果宣告中提供了形參的名字,也只是用作輔助文件。另外要注意函式宣告是一個語句,後面不可漏分號!
如果是自己寫的函式,在宣告函式的同時要對函式進行定義。
假設標頭檔案名為head.h,原始檔名為main.cpp,兩個檔案在同一個目錄下
在標頭檔案中直接加上int swap(int a,int b);這一句就可以了
在原始檔中還要加上include"head.h"
並且加上函式的定義:
bool swap(int a,int b)
注意在標頭檔案中宣告後記得在原始檔中包含這個標頭檔案,要不然是找不到函式的定義的。
2樓:_鈊_煩_薏亂
這不是編譯錯誤,這是連線錯誤。
第一種可能:
你先去工程目錄下面看有沒有lib檔案,有的話就用這個指令加進去:
#pragma comment( lib,"lib檔名" )
加在這兩個標頭檔案後面。
比如:#pragma comment( lib,"glut32.lib" )
#pragma comment( lib,"glut.lib" )
第二:看看commom/目錄下面是否有對應的openglsb.cpp、gltools.cpp檔案,如果有的話,就新增到工程裡邊來。
這需要查詢相關文件。
不過通常如果不是系統庫的話都可以在安裝的sdk下面的lib目錄下找到lib檔案,在bin目錄下找到相關的dll檔案。
3樓:匿名使用者
對於windows系統函式來說,你查msdn的時候都可以找到函式所在的標頭檔案和所需要的庫,如果用別人寫的函式話必須明確在那個庫。。。或者看有沒有幫助文件的。。。。。
4樓:匿名使用者
你奴既然是呼叫別人編寫的glttransformpoint方法,那麼應該將別人的庫檔案一起拷到你的工程裡面,這樣連線的時候才不會發生找不到函式定義的情況。
opengl的方法一般是由兩類檔案組成,標頭檔案和庫檔案,標頭檔案用來宣告函式原型,庫檔案是函式定義。
再檢查一下,是否少拷了一個庫檔案。
5樓:我不懂但可以裝
只包含了標頭檔案?
是不是缺少 .lib 的檔案
如何在c++標頭檔案中定義函式,然後在原始檔中使用
6樓:大野瘦子
/*在text。h標頭檔案中進行宣告*/
#include
using namespace std;
void display(int,int);/*使用該函式來實現輸出*/
/*在texxt。cpp中進行定義,注意第一行,很重要因為不是c++標準庫中的標頭檔案,所以不能用<>,而要用""括起標頭檔案*/
#include "text.h"
void display(int x,int y)/*在主函式中進行呼叫函式*/
#include "text.h"
int main()
7樓:匿名使用者
一般為了安全性,只在標頭檔案中進行宣告,而不定義,在其它檔案中進行定義。給你個例子。因為我學了才一年,所以沒法給你說過多的理論,給你兩個例子你好好體會把。
簡單例子實現輸出兩個資料。
/*在text。h標頭檔案中進行宣告*/
#include
using namespace std;
void display(int,int);/*使用該函式來實現輸出*/
/*在texxt。cpp中進行定義,注意第一行,很重要因為不是c++標準庫中的標頭檔案,所以不能用<>,而要用""括起標頭檔案*/
#include "text.h"
void display(int x,int y)
下面這個例子實現類的標頭檔案中宣告,實現2*3矩陣的加法運算,並進行過載輸入輸出流。
在/*matrix。h中宣告*/
#include
class matrix
;/*在matrix。cpp中進行定義*/
#include "matrix.h"
return x;
}istream& operator>>(istream& w,matrix& y)
return w;
}ostream& operator <<(ostream & x,matrix& z)
8樓:匿名使用者
可以在原始檔中新增另一個原始檔嗎?好像只能新增標頭檔案哦,在c++中。你要程式執行正確,就要建一個標頭檔案,然後在標頭檔案中宣告函式,當然函式體的定義一般建義是在另一個原始檔中定義,在另一個原始檔中定義標頭檔案中宣告的函式時應使用#include語句把標頭檔案包含進來才行。
然後你在在主程式中的原始檔中使用#include把標頭檔案包含進來就沒錯了,下面舉個例子給你看下。
//標頭檔案hyong.h的內容如下
#ifndef hy //一般在標頭檔案都都使用這種格式以防止標頭檔案在同一檔案中被包含兩次。語名#ifndef hyong…..#endi表示僅當以前沒有使用前處理器編譯指令#define定義的名稱hyong時才處理#ifndef….
#endif之間的語句。
#define hy //在這裡用define定義一個名字hy,以便在下次訪問到該標頭檔案時,使該名字已經被定義,從而讓程式跳過#ifndef….#endif間的語句。
void g(); //在標頭檔案中宣告一個函式g();
#endif
//定義標頭檔案中宣告的函式的原始檔hyong.cpp的內容如下
#include "stdafx.h" //注意:在vc++中所有的原始檔中都要包含這條語句。
#include "hyong.h" //將標頭檔案hyong.h包含進來,這裡使用雙引號,而不是引號,以便能更快地檢查到該標頭檔案中定義的名字
#include
using namespace std;
void g() //定義標頭檔案hyong.h中宣告的函式g()
//主程式原始檔ff.cpp的內容如下
#include "stdafx.h"
#include
#include "hyong.h" //注意,主程式和hyong.cpp的檔案中都包含了這個標頭檔案。
using namespace std;
int main()
9樓:
在標頭檔案(如test.h)中定義函式,在同名原始檔(如test.cpp)中寫函式的實現,再寫增加一個主函式原始檔main.
cpp,同名原始檔與主函式原始檔中包含標頭檔案,標頭檔案中加入巨集定義:
#ifndef test_h__
#define test_h__
#endif //test_h__
c++標頭檔案裡宣告瞭變數、類、函式,在.c原始檔裡還要宣告嗎?原始檔裡的每個變數都要在標頭檔案裡宣告嗎?
10樓:一生吥勝
宣告並不是定義,對於全域性的或公共的變數,都會在一個標頭檔案裡用extern關鍵字宣告變數,表明這個變數是個外部變數,已經再某一個.cpp檔案中定義了.然後在一個原始檔中可以定義該變數,這樣能達到共享的效果.
對於一些函式可以直接在標頭檔案中定義,比如類的行內函數 ,可以直接在類的宣告中定義 。
原始檔裡的函式和變數,並不一定都要在標頭檔案裡宣告,可以直接在原始檔裡宣告和定義 ,但這樣那些變數和函式的作用域就是檔案作用域,就是只能在該原始檔中使用 。
11樓:匿名使用者
#include 這一行你可以看成是把***.h檔案裡的內容完全copy在這個位置
標頭檔案裡的東西相當於是全寫在原始檔的開頭了,自然不用再宣告。
一般標頭檔案裡放一些比較通用的巨集,類和函式,宣告只要一次就可以了 ,不然會衝突報錯
怎麼檢視c/c++標頭檔案中各函式的定義?
12樓:匿名使用者
windows搜尋檔案 一般安了編譯器 在編譯器的include資料夾中都能找到 不過windows api的**就看不到了 封裝了
13樓:匿名使用者
不知道你用的是什麼編輯器,如果函式是寫的,你可以點右鍵轉到定義或宣告,應該可以檢視標註;如果是編輯器自帶的就下了msdn吧
14樓:0_ut過客
裝msdn就可以了,和c++放同一個資料夾!好像有2g哦
C 中min函式和max函式的標頭檔案是什麼
詮釋美麗瞬間 拓展資料 包含在c 標準庫中標頭檔案中,在標頭檔案中定義了min,max的巨集,若在包含的同時包含會導致函式無法使用。 赤明魔王 包含在c 標準庫中標頭檔案中,在標頭檔案中定義了min,max的巨集,若在包含的同時包含會導致函式無法使用。提供了 cpp min等函式來代替min函式的功...
c語言怎樣才能在標頭檔案中實現函式定義
標頭檔案和原始檔沒什麼兩樣,可以直接定義,但是在標頭檔案中使用定義是違背初衷的做法,是應該杜絕的 唐博 正常的函式是不可以在標頭檔案中定義的,除非你將函式定義成行內函數。在定義函式的時候,前面加上inline 就可以了。如 inline int a 但是行內函數是c 裡面的,可能c的編譯器會不支援。...
c 中什麼是標頭檔案,用來幹嘛的
哎呀 最簡單粗暴的理解就是 將別的檔案中的 插入指定位置。1 最通俗的理解,標頭檔案就是將別的檔案裡的 插入到程式設計 中的一種方式。它使用 include指令,比如 include abcd.h 這個指令告訴編譯器,我這兒要加入一些 這些 在一個叫 abcd.h 的檔案中,將這個檔案的內容直接全部...