繁体   English   中英

用C ++定义和数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM