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++ 说 获取临时数组的地址
它比临时的更全球化...
这个值是从read
中得到的key escape
无论如何...
我该如何解决?
此代码适用于 osx,但我需要在 linux 上进行粗略编译 ...
谢谢
如果您使用 define 语句,代码中 KEY_ESC_
的所有实例都将逐字替换为 (char[]) {27, 0, 0, 0, 0, 0, 0},
,这将在您的代码中成为临时变量。
我猜你有这样的函数: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_);
我对 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++ 说 获取临时数组的地址
它比临时的更全球化...
这个值是从read
中得到的key escape无论如何...
我该如何解决?
此代码适用于 osx,但我需要在 linux 上进行粗略编译 ...
谢谢
如果您使用 define 语句,代码中 KEY_ESC_
的所有实例都将逐字替换为 (char[]) {27, 0, 0, 0, 0, 0, 0},
,这将在您的代码中成为临时变量。
我猜你有这样的函数: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_);