有一块内存,其中存放了一组二维的数据;
现在想宏定义一个指针,指向该块内存,是否可行?若可行,如何做?
是宏定义(#define)一个指针,而不是定义一个指针。
请理解,宏定义就是在进行编译的同时,将使用此宏定义的代码位置全部进行替换后再编译。
如果只是定义了某个宏定义,而没有使用的位置的话,编译后生成的机器码或可执行文件是不包含与此宏定义相关的内容的。
举例1:
以上几行写在文件头部编译没有问题,但是wcCharPointer的指针变量是不存在的。
举例2:
以上几行写在文件头部编译没有问题,而且之后的代码中可以对wcCharPointer指针变量进行赋值了,此时才是真正定义了一个指针变量。
不知楼主是否理解了。
追问若我想宏定义一个标号,当作指针来使用;该标号指向一块二维数据所在内存,如下:
#define POINTER (char (*)[10])(0x1234)
上述这种宏定义是否有问题,若有,请问问题出在哪里,谢谢
你上面的写法不可以,编译不过。
我有点明白你想说什么了,你想用宏定义定义出来个指针变量,还不想在宏定义里面指定变量名称。
但是变量的名称你在代码中必须要指定的,就算宏定义里面不包含,在你使用宏定义的位置也必须给出来。
我感觉你还是没真正理解宏定义的真正含义,建议先去了解一下比较好。
要想在代码中指定特定的名称至少也得写成下面的这样