使用#define创建指针

时间:2010-12-02 23:22:40

标签: c++ c-preprocessor

是否可以使用#define创建指针? 像这样:

#define *HEY

我会用它来做这样的事情:

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

2 个答案:

答案 0 :(得分:2)

不,#define宏名称中不允许使用星号。

您的示例变量声明无论如何都不会起作用,因为它不包含文本*HEY,它只包含HEY,它与定义的宏名称不匹配。

该代码的目的是什么?制作一个指向数字2的指针?

答案 1 :(得分:1)

定义完全基于文本替换。它们只能在您调用名称的任何位置插入文本。在你的问题中,你已经犯了两个错误。

您不能在宏的名称中使用* 如果要调用宏,则必须使用您定义的相同名称调用它 如果*本来是合法的,你也可以用这个名字叫它* HEY

顺便说一下。在宏定义中绝对没有隐藏任何秘密功能。

#define HEY 2

在编译前简单地用源代码重放源代码中的每个HEY。没有其他事情发生。 如果您愿意,可以替换要更换的所有内容,甚至是单开口支撑。

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

应该有效,即使很无用