用C++定义和数组

Flo*_*eau 1 c++ g++4.8

我对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_'
Run Code Online (Sandbox Code Playgroud)

您可以看到这是一个定义.我不明白为什么g ++说取临时数组的地址

它比全球更具全球性......

这个值是读取的关键转义

无论如何......

我该如何解决?

这段代码适用于osx,但我需要在linux上进行大量编译...

谢谢

Bas*_*eld 5

如果使用define语句,KEY_ESC_代码中的所有实例都将被字面替换,(char[]) {27, 0, 0, 0, 0, 0, 0},代码中的那个实例将成为临时变量.