c++ - C++中的定义和数组

标签 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_'

如您所见,这是在定义中。我不明白为什么 g++ 说获取临时数组的地址

它比临时的更全局化......

这个值就是读出的key escape

任何方式...

我该如何解决?

此代码适用于 osx,但我需要在 linux 上进行粗略编译 ...

谢谢

最佳答案

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

关于c++ - C++中的定义和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49716990/

相关文章:

c++ - g++ 不会在模板代码中发出 -Wsign-compare

c++ - 写入未打开的 ofstream

c++ - boost 1.71.0 : How to get process output?

C++ 基于其他 int 数组排序

c++ - 将 c++98 代码升级到 c++11

c++ - C++ 编译器中的奇怪行为 - 优化?

c++ - 从 C 调用 C++ 函数时崩溃

c++ - 使用 g++ 4.8.2 时,tan() 计算比 sin()/cos() 长两倍

c++ - Google 服务器正在响应一个过时的 html 文件

c++ - 将一个 vector 的内容 move 到另一个