是否可以使用#define
创建指针?
像这样:
#define *HEY
我会用它来做这样的事情:
#define *HEY 2
...
int *s=HEY;
答案 0 :(得分:2)
不,#define
宏名称中不允许使用星号。
您的示例变量声明无论如何都不会起作用,因为它不包含文本*HEY
,它只包含HEY
,它与定义的宏名称不匹配。
该代码的目的是什么?制作一个指向数字2的指针?
答案 1 :(得分:1)
定义完全基于文本替换。它们只能在您调用名称的任何位置插入文本。在你的问题中,你已经犯了两个错误。
您不能在宏的名称中使用* 如果要调用宏,则必须使用您定义的相同名称调用它 如果*本来是合法的,你也可以用这个名字叫它* HEY
顺便说一下。在宏定义中绝对没有隐藏任何秘密功能。#define HEY 2
在编译前简单地用源代码重放源代码中的每个HEY。没有其他事情发生。 如果您愿意,可以替换要更换的所有内容,甚至是单开口支撑。
#define OPEN (
...
cout << 2 * OPEN 3 + 4 ) << endl;
应该有效,即使很无用