首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ typedef struct 名稱空間解析:_TAG、類型別名與指針類型

     編輯:程式設計綜合問答

代碼拆解

typedef struct _THREAD_CONTEXT {
    CWorkQueue* pWorkQueue;
    void*       pThreadData;
} THREAD_CONTEXT, *PTHREAD_CONTEXT;

三個標識符含義

標識符角色說明
_THREAD_CONTEXT結構標籤結構體的內部名稱,屬於「標籤名稱空間」,可用 struct _THREAD_CONTEXT 引用。
THREAD_CONTEXT類型別名typedef 引入的普通標識符,直接表示該結構類型,聲明變量時無需 struct 關鍵字。
PTHREAD_CONTEXT指針類型別名指向該結構的指針類型,慣例以 P 前綴表示指針。

使用示例

// 1. 使用標籤名(需加 struct)
struct _THREAD_CONTEXT ctx1;

// 2. 使用類型別名(推薦)
THREAD_CONTEXT ctx2;
ctx2.pWorkQueue = queue;
ctx2.pThreadData = data;

// 3. 使用指針類型
PTHREAD_CONTEXT pCtx = &ctx2;
pCtx->pWorkQueue = anotherQueue;

// 4. 動態分配
PTHREAD_CONTEXT pNew = (PTHREAD_CONTEXT)malloc(sizeof(THREAD_CONTEXT));

注意事項

  • C++ 中 struct _THREAD_CONTEXT { ... }; 已自動將 _THREAD_CONTEXT 注入普通名稱空間,typedef 主要為兼容 C 風格代碼。
  • 指針類型別名便於統一代碼風格,但現代 C++ 傾向直接寫 THREAD_CONTEXT*,減少抽象層。
  • 標籤名以下劃線開頭(_THREAD_CONTEXT)在用戶代碼中屬保留名稱,建議改為 ThreadContextTag 等非保留形式。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved