我正在尝试构建一个具有多个变体的项目。
每个变体都有一个不同的const表。
所以我想使用宏(例如VARIANT)来控制将要编译的const表。

#if (VARIANT == 1)
static UINT8 const variant_1_serial_no[6] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06};
#else if (VARIANT == 2)
static UINT8 const variant_2_serial_no[6] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};
#endif


我使用批处理文件来调用make实用程序。
在批处理文件中,我使用set / p为用户提供选择变体编号的机会。

set /p VARIANT_TYPE=1:variant1;2:variant2;others quit(for example:input 1 chose variant1)
call make.bat %VARIANT_TYPE%


然后,我尝试将此宏定义为编译器输入。

-DVARIANT=$(VARIANT_TYPE)


而且根本不起作用,因为这里的$(VARIANT_TYPE)是非法的。

我使用Borland make实用程序ver5.2和IAR编译器。

有人知道如何将此参数传递给编译器吗?

最佳答案

假定variant_1_serial_novariant_2_serial_no相同。
您可以执行以下操作,而不是将值传递给宏并尝试进行比较。

#ifdef VAR1
static UINT8 const variant_1_serial_no[6] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06};
#elif VAR2
static UINT8 const variant_2_serial_no[6] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};
#endif


编译以选择第一组常量时,请使用

gcc -DVAR1 <file_name>


否则选择VAR2使用

gcc -DVAR2 <file_name>

关于c - 如何将参数值从make命令行传递到编译器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29206681/

10-10 08:28
查看更多