c語言標頭檔案中定義結構體的問題,C語言標頭檔案中定義結構體的問題

時間 2021-09-08 13:31:04

1樓:匿名使用者

c語言程式設計中,為防止標頭檔案在同一編譯單元被重複引用,常引入#ifndef巨集來進行保護,如:標頭檔案my_head.h

#ifndef _my_head_h_             //如果沒有定義巨集_my_head_h_

#define _my_head_h_             //則,定義該巨集名

//以下是被保護的**區

//進行相應的全域性變數和結構體型別定義

typedef struct stu  stu ;

#endif                        //巨集判斷結束

這樣,當整個**中,多次引用這個my_head.h時,只有一次是生效的,系統編譯時,如果檢查巨集_my_head_h_ 已經定義,就不會再進入被保護的**區了。

ps: 巨集名,一般是與頭檔名相同,只是把字母全大寫,前後加上下劃線(_)

2樓:小西

標頭檔案由三部分內容組成:

(1)標頭檔案開頭處的版權和版本宣告。

(2)預處理塊。

(3)函式和類結構宣告等。

它的作用:

(1)通過標頭檔案來呼叫庫功能。

(2)標頭檔案能加強型別安全檢查。

用 #include 格式來引用標準庫的標頭檔案(編譯器將從標準庫目錄開始搜尋),到include子目錄下搜尋給出的檔案,並把它嵌入到當前檔案中 。

用 #include 「filename.h」 格式來引用非標準庫的標頭檔案(編譯器將從使用者的工作目錄開始搜尋),在當前目錄中進行搜尋,如果找不到,再按標準方式進行搜尋 ,這種方式適用於使用者自己建立的標頭檔案。

需要對外公開的常量放在標頭檔案中,不需要對外公開的常量放在定義檔案的頭部。為便於管理,可以把不同模組的常量集中存放在乙個公共的標頭檔案中

為何c語言標頭檔案中定義的結構體顯示未能定義?

3樓:匿名使用者

你雖然定義了,但是結構體在下面,所以你只能把報錯的那句話移到結構體定義的下面才可以

c語言是在.h中定義結構體還是在.c中定義?

4樓:

//point.h

#ifndef point_h

#define point_h

struct point;

#endif

//1.c

#include "point.h"

struct point p1,p2,p3;

//1.h(#ifndef之類的略)

#include "point.h"

extern struct point p1,p2,p3;

2.c#include "point.h"

#include "1.h"

//後面就可以用p1,p2,p3了。以後每個.c都像這樣用就可以了,變數在哪個.c裡定義的,就在與之對應的.h裡extern,以後要用到的每個標頭檔案都include它。

5樓:

如果只是用到宣告,放在.h種就行了;

如果宣告的同時並定義乙個全域性變數的話,在.h裡用extern宣告,並在對應的.c裡定義。

其它的.c檔案直接include就行了

6樓:范德薩了就

結構體是一種型別,定義一種型別最好是在.h定義,這樣其他地方想用這個結構體,只需包含此.**件即可,但是定義結構體變數的話,最好載.

c檔案定義(為了防止重複定義,所以不建議在c檔案中定義變數),然後..h裡面extern宣告,其他.c檔案想用只需包含那個.

**件即可

7樓:亂舞大螃蟹

最好在標頭檔案中定義,原始檔需要用這個結構體就直接引用這個標頭檔案就可以了

8樓:匿名使用者

將這個三個結構體 都放到.h中,不用extern吧,只有.c檔案中新增上這個.**件就好了。

c語言中定義乙個結構體如何在不同的.c檔案中使用。

9樓:家谷秋魯曠

struct

node

這樣就定義了乙個結構體型別node,它有兩個int型別的成員,分別是a和b,定義變數是用

struct

node

st_a;

這樣的形式.(例如,上式就定義了乙個名為st_a的結構體變數)

10樓:橙心橙願

比如三個.c檔案乙個.**件

c      2.c     3.c      4.h這三個標頭檔案都引用4.h include<4.h>4.h中定義乙個結構體型別struct test{};

1.c中定義乙個該結構體型別的全域性變數struct test mode;

4.h中extern struct test mode;

其他.c檔案就可以直接使用這個結構體變數了,並且是共用的

11樓:匿名使用者

#include

然後就用啊

正式一點的,可以宣告

extren struct ***;

就可以了

注意標頭檔案需要用#ifndef #define #endif或者#pragama once,確保標頭檔案只引入一次,以免引起重複定義的錯誤。

12樓:水上漂湯

使用巨集可以避免重複定義,參考:http://zhidao.

13樓:匿名使用者

包含這個.h標頭檔案即可。

c語言結構體定義,C語言結構體定義

c語言結構體定義 struct為結構體關鍵字,tag為結構體的標誌,member list為結構體成員列表,其必須列出其所有成員 variable list為此結構體宣告的變數。結構體是c語言中聚合資料型別 aggregatedatatype 的一類。結構體可以被宣告為變數 指標或陣列等,用以實現較...

C語言結構體定義,C語言結構體定義 25

chanrich輕輕 所謂結構體陣列,是指陣列中的每個元素都是一個結構體。在實際應用中,c語言結構體陣列常被用來表示一個擁有相同資料結構的群體,比如一個班的學生 一個車間的職工等。結構體可以儲存不同的資料型別,將他們互相聯絡起來。結構體陣列可以連續儲存多個結構體,和陣列作用相似。比如想定義同一個最小...

c語言定義結構體變數,C語言 定義結構體變數

樂跑小子 首先,定義一個結構的一般形式為 struct結構名 成員表由若干個成員組成,每個成員都是該結構的一個組成部分。對每個成員也必須作型別說明,其形式為 型別說明符 成員名 成員名的命名應符合識別符號的書寫規定。例如 struct stu 在這個結構定義中,結構名為stu,該結構由4個成員組成。...