首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法将#define integer作为uint8_t / int类型的参数或数组索引进行传递

无法将#define integer作为uint8_t / int类型的参数或数组索引进行传递
EN

Stack Overflow用户
提问于 2018-08-31 04:47:51
回答 1查看 224关注 0票数 0

有一个奇怪的问题,基本上我不能使用#define指令声明一个整数,然后将该整数用作函数参数或索引数组。

要使以下示例正常工作,唯一的方法是将它们声明为

代码语言:javascript
复制
const uint8_t LOC3 = 3;

代码语言:javascript
复制
const uint8_t PORTA = 0;

下面是定义:

代码语言:javascript
复制
#define LOC3 3;

下面是函数原型:

代码语言:javascript
复制
void spi_Setup(USART_TypeDef *spi,
            uint8_t location, <-- this parameter here
            bool master,
            char* rxBuffer,
            char* txBuffer);

即使在将参数声明为int类型时,它仍然不允许我像这样调用函数:

代码语言:javascript
复制
spi_Setup(USART1, LOC3, true, receiveBuffer, transmitBuffer);

这同样适用于数组索引:

代码语言:javascript
复制
#define PORTA 0;

下面是调用该结构的示例:

代码语言:javascript
复制
GPIO->P[PORTA].DOUTCLR = 1 << 1;

如前所述,这两个示例都不起作用,

编译器设置:

方言: C99编译器: GNU ARM嵌入式工具链

编译器标志:

gdwarf-2-mcpu=

-m0plus -mthumb -std=c99 '-DDEBUG=1‘'-DEFM32ZG222F32=1’gdwarf -I"/home/access/Downloads/simplicitystudio/pkg/simplicitystudio/opt/simplicitystudio/developer/sdks/gecko_sdk_suite/v2.3//hardware/kit/common/bsp“-I"/home/access/Downloads/simplicitystudio/pkg/simplicitystudio/opt/simplicitystudio/developer/sdks/gecko_sdk_suite/v2.3//platform/Device/SiliconLabs/EFM32ZG/Include”-I"/home/access/Downloads/simplicitystudio/pkg/simplicitystudio/opt/simplicitystudio/developer/sdks/gecko_sdk_suite/v2.3//硬件/套件/通用/驱动程序“-O0 -Wall -c -fmessage-length=0 -mno-sched-prolog -fno-builtin -ffunction-sections -fdata-sections

汇编程序标志:

带有cpp的

-g -gdwarf-2 -mcpu= -mthumb -m0plus -c -x汇编程序“/ -I"/home/access/Downloads/simplicitystudio/pkg/simplicitystudio/opt/simplicitystudio/developer/sdks/gecko_sdk_suite/v2.3//platform/CMSIS/Include”-I"/home/access/Downloads/simplicitystudio/pkg/simplicitystudio/opt/simplicitystudio/developer/sdks/gecko_sdk_suite/v2.3//hardware/kit/EFM32ZG_STK3200/config“/-c -I"/home/access/Downloads/simplicitystudio/pkg/simplicitystudio/opt/simplicitystudio/developer/sdks/gecko_sdk_suite/v2.3//hardware/kit/common/bsp“-I"/home/access/Downloads/simplicitystudio/pkg/simplicitystudio/opt/simplicitystudio/developer/sdks/gecko_sdk_suite/v2.3//platform/Device/SiliconLabs/EFM32ZG/Include”-I"/home/access/Downloads/simplicitystudio/pkg/simplicitystudio/opt/simplicitystudio/developer/sdks/gecko_sdk_suite/v2.3//hardware/kit/common/drivers“'-DEFM32ZG222F32=1‘

链接器标志:

-g -gdwarf-2 -mcpu=cortex m0plus -mthumb -T "${BuildArtifactFileBaseName}.ld“-Xlinker --gc-sections -Xlinker -Map="${BuildArtifactFileBaseName}.map”--specs=Nan.specs

我问过我的父亲,他是一位老手,他说这很奇怪。我同意,因为我从来没有以这种方式使用#定义的问题,事实上,它被认为是惯例。

我尝试用一组括号将数字括起来,即

代码语言:javascript
复制
#define LOC3 (3)

然而,这也不起作用。

以前有没有人遇到过这个问题?

提前谢谢你,MM25

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52105129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档