[英]Define and array in C++
我对Linux上g ++的此错误有疑问:
srcs/../incs/file.hpp:21:27: error: taking address of temporary array
# define KEY_ESC_ (char[]){27, 0, 0, 0, 0, 0, 0}
^~~~~~~~~~~~~~~~~~~~~~
srcs/main.cpp:91:16: note: in expansion of macro 'KEY_ESC_'
如您所见,这是在定义中。 我不明白为什么g ++说要使用临时数组的地址
它比临时性更具全球性...
此值是从读取获得的键转义
随便...
我该如何解决?
这段代码可在osx上运行,但是我需要在linux上进行粗编译。
谢谢
如果使用define语句,则代码中的KEY_ESC_
所有实例将被(char[]) {27, 0, 0, 0, 0, 0, 0},
KEY_ESC_
逐字替换,这时代码中的临时变量。
我猜你有这样的功能: void f(char** A)
所以你通过&KEY_ESC_
{27, 0, 0, 0, 0, 0, 0}
是const char
数组。
通过将其强制转换为char [],可以创建一个临时变量。
问题在于该方法可以保存临时地址,并在释放后重新使用。
您可以尝试使用const
解决它:
const char KEY_ESC_[] = {27, 0, 0, 0, 0, 0, 0};
并调用方法:
void f2(const char** A)
与:
f2(&KEY_ESC_);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.