我正在編程抽象的數據類型。這意味着我的頭文件我宣佈我的結構指針及其相關的功能,像這樣:C編程抽象 - typedef外部聲明
application.h
typedef struct APPLICATION_Context *APPLICATION_Context;
extern APPLICATION_Context appContextConstruct;
extern void appContextAddMember(int member);
,並在源文件中:
application.c
#include "application.h"
struct APPLICATION_Context{
int member0;
int member1;
int member2;
};
extern APPLICATION_Context appContextConstruct;
這個設置的兩個問題:
爲什麼在頭文件中,我不必將typedef'd結構聲明爲extern?它也應該在標題外部可見!
是否需要在源文件中重複'extern'關鍵字?
使用'extern'關鍵字可以區分*聲明*和*定義*。 –
我可以回答這些問題,但不清楚你用這段代碼試圖做什麼,它沒有什麼意義。你是否試圖通過不完整/不透明的類型創建私有封裝?你想創建某種「單身」對象嗎? – Lundin
通過不完整類型的私有封裝 – hewi