我不確定術語,但我想知道在以下情況下main.c是否可以訪問x.cs #define:
/*x.h*/
#define ONE 1
/*x.c*/
#include "x.h"
#define TWO 2
/*main.c*/
#include "x.h"
int a = ONE;
int b = TWO;
gcc -o out main.c x.c如果我想知道,你可以告訴我跑。但它可能有效,但不正確。這就是我問你的原因。我的目標是讓#defines 位于x.c該檔案的本地,因此它們不會與main.c. 另一方面,我確實希望#defines fromx.h可用,main.c因為在實作 from 的功能時需要使用它們x.c
請指教
uj5u.com熱心網友回復:
您的兩個 .c 檔案等效于以下內容:
xc :
#define ONE 1
#define TWO 2
主.c:
#define ONE 1
int a = ONE;
int b = TWO;
.c 檔案中的任何#define內容都將是該檔案的本地檔案。這是優化代碼時的常見做法,保留#define在同一個 c 檔案中宣告的 .c 檔案中專用的 a。
編輯:但是隨著#defines和#includes(以及許多其他前處理器指令)被擴展,這是從上到下完成的。這意味著一個指令可以從之前擴展#define的一些指令中接收 s 。
這是我所說的一個例子:
啊:#include
#define A 1
:
#define NEW_A A 1
主.c:
#include "a.h"
#include "b.h"
#include <stdio.h>
int main() {
printf("%i, %i\n", A, NEW_A);
return 0;
}
將輸出:
1, 2
我建議閱讀 C 中的編譯單元和前處理器指令。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/522233.html
標籤:C
上一篇:CS50PSET2可讀性2022
