2010-12-02 105 views
0

是否可以使用#define創建指針?
事情是這樣的:使用#define創建指針

#define *HEY 

,我會用它的東西是這樣的:

#define *HEY 2 
... 
int *s=HEY; 
+0

你是什麼意思「創建指針」?你能告訴你如何使用它? – tenfour 2010-12-02 23:23:46

+0

即使有可能,你爲什麼要這麼做? – ronag 2010-12-02 23:24:30

+4

你應該避免像這樣混淆代碼,因爲它會導致頭痛。總是儘可能使自己的代碼儘可能自我記錄。 – LeopardSkinPillBoxHat 2010-12-02 23:27:22

回答

2

號,星號不#define宏名允許的。

您的示例變量聲明無論如何都不起作用,因爲它不包含文本*HEY,它只包含HEY,它與所定義的宏名稱不匹配。

這是什麼代碼打算做?做一個指向數字2的指針?

1

定義完全基於文本替換。他們只能在你稱之爲名字的地方插入文本。在你的問題中你已經犯了兩個錯誤。

如果你想調用一個宏,你可以不用宏* ,如果*是合法的,你必須調用它正是這個名字* HEY

順便說一下。宏定義中絕對沒有隱藏的祕密功能。

#define HEY 2 

只需在編譯前用源代碼重新編譯每個HEY。沒有其他事情發生 如果您願意,您可以替換您想要替換的所有物品,即使是單個開口大括號。

#define OPEN (
... 
cout << 2 * OPEN 3 + 4) << endl; 

應該工作,即使是相當無用