簡體   English   中英

在C中包含頭文件

[英]include header files in C

我是C和C ++語言的新手,我對C中的頭文件有疑問:

#define HELLO (1)
typedef struct
{
   int a;
   int b;
} hello;

BH

#include "a.h"
#define NUMBER (3)

main.c中

#include "b.h"

main.c ,可以在main.c使用ah定義的structmacro嗎?

確保可以在main.c中同時使用Struct和MACROS

您需要了解C編譯過程,在對main.c進行編譯或鏈接之前,需要執行預處理器步驟:

預處理器

  • 此階段的輸入是.c文件和.h文件
  • 預處理過程對預處理程序關鍵字(如#define,#ifdef,#include等)進行處理,並在文本替換過程之后生成一個新的.pre文件或.i文件。
  • 該階段的輸出是沒有任何預處理關鍵字的C代碼。

在此處輸入圖片說明

所以main.c實際上看起來像這樣:

#define HELLO (1)
typedef struct
{
   int a;
   int b;
} hello;
#define NUMBER (3)

然后替換所有宏,這里您不使用HELLO或NUMBER,因此純c主文件將是:

typedef struct
{
   int a;
   int b;
} hello;

是的,可以使用。 這是#include頭文件的唯一目的。

有關更多信息,您可以查看代碼的預處理版本。 采用

gcc -E <filename.c>  //main.c, in this case

在那里,您可以在隨附的頭文件中看到struct和MACROS定義的存在。

是的,出現在包含文件中的#include指令本身具有正常的作用,直到實現定義的包含級別數限制。 “正常效果”等效於文本插值-也就是說,對於包含文件的內容沒有單獨的作用域確定-因此,出現在任何直接或間接包含文件中的任何聲明對於包含點之后的所有代碼都是可見的。

是的,#include語句可以將多個文件鏈接在一起。 #include實際上將一個文件的內容復制並粘貼到另一個文件中,因此您可以將其視為一個接一個的效果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM