C++11 如何将整数数组指定为编译器命令行define-D

C++11 如何将整数数组指定为编译器命令行define-D,c++11,C++11,我希望能够在编译时指定一个整数列表 这些整数用于输出系统中某些组件的调试信息,这些组件将这些整数作为id。打印调试信息的实际实现在我们自己的一个库中,但我需要能够指定要从使用该库的项目中调试的id,例如 -DDEBUG\u SENSORIDS=“12,23,45” 在实际C++代码中,定义(当存在时)需要转换成整数数组或向量。 以下解决方案会导致编译错误 int-debugIds[]={DEBUG_-SENSORIDS} <command-line>:0:31: error: exp

我希望能够在编译时指定一个整数列表 这些整数用于输出系统中某些组件的调试信息,这些组件将这些整数作为id。打印调试信息的实际实现在我们自己的一个库中,但我需要能够指定要从使用该库的项目中调试的id,例如

-DDEBUG\u SENSORIDS=“12,23,45”

在实际C++代码中,定义(当存在时)需要转换成整数数组或向量。 以下解决方案会导致编译错误

int-debugIds[]={DEBUG_-SENSORIDS}

<command-line>:0:31: error: expected '}' before ';' token
src\SenseNode.cpp:19:20: note: in expansion of macro 'DEBUG_SENSORIDS'
int debugIds[] = { DEBUG_SENSORIDS };
                   ^ 
src\SenseNode.cpp:19:36: error: expected declaration before '}' token
  int debugIds[] = { DEBUG_SENSORIDS };
                                     ^
:0:31:错误:在“;”之前应为“}”代币
src\SenseNode.cpp:19:20:注意:在宏“DEBUG\u SENSORIDS”的扩展中
int debugIds[]={DEBUG_SENSORIDS};
^ 
src\SenseNode.cpp:19:36:错误:应在“}”标记之前声明
int debugIds[]={DEBUG_SENSORIDS};
^
我如何才能做到这一点?

删除引号:

-DDEBUG_SENSOR_VALUES=12,23,45
删除引号:

-DDEBUG_SENSOR_VALUES=12,23,45

没关系,这是一个愚蠢的错误,因为-D声明有一个错误;附在结尾

不要紧,-D声明有一个错误,这是一个愚蠢的错误;附在末尾

@Bascy-其他两点:确保使用正确的标识符(
DEBUG\u SENSOR\u VALUES
DEBUG\u SENSORIDS
?)和整数数组的正确语法(不是
int[]ids={};
而是
int-ids[]={};
)@max66我应该复制/粘贴代码,但不是重新键入,犯了这些愚蠢的错误,对不起。。。所以代码实际上就像你建议的那样。我据此编辑了原始问题,引号可能会被命令解释器删除(反斜杠提示
cmd
,而不是
bash
,但应该与它们类似)。唯一的区别可能是字符串可以包含带引号的空格。@Bascy类型似乎不是您的强项;-)@Bascy-其他两点:确保使用正确的标识符(
DEBUG\u SENSOR\u VALUES
DEBUG\u SENSORIDS
?)和整数数组的正确语法(不是
int[]ids={};
而是
int-ids[]={};
)@max66我应该复制/粘贴代码,但不是重新键入,而是犯了这些愚蠢的错误,很抱歉所以代码实际上就像你建议的那样。我据此编辑了原始问题,引号可能会被命令解释器删除(反斜杠提示
cmd
,而不是
bash
,但应该与它们类似)。唯一的区别可能是字符串可以包含带引号的空格。@Bascy类型似乎不是您的强项;-)。