我正在尝试构建一个具有多个变体的项目。
每个变体都有一个不同的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_no
和variant_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/