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

位移

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

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

const uint8_t LOC3 = 3;

const uint8_t PORTA = 0;

这是定义:

#define LOC3 3;

下面是函数原型:

void spi_Setup(USART_TypeDef *spi,
            uint8_t location, <-- this parameter here
            bool master,
            char* rxBuffer,
            char* txBuffer);

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

spi_Setup(USART1, LOC3, true, receiveBuffer, transmitBuffer);

这同样适用于数组索引:

#define PORTA 0;

这是调用结构:

GPIO->P[PORTA].DOUTCLR = 1 << 1;

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


编译器设置:

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

编译器标志:

-g -gdwarf-2 -mcpu=cortex-m0plus -mthumb -std=c99 '-DDEBUG=1' '-DEFM32ZG222F32=1' -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"-I"/home/access/Downloads/simplicitystudio/pkg/simplicitystudio/opt/simplicitystudio/developer/sdks/gecko_sdk_suite/v2.3//hardware/kit/common/bsp"-I" /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" -O0 -Wall -c -fmessage-length=0 -mno -sched-prolog -fno-builtin -ffunction-sections -fdata-sections

汇编器标志:

-g -gdwarf-2 -mcpu=cortex-m0plus -mthumb -c -x assembler-with-cpp -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" 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/simplicitystudioity/opt/ /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=nano.眼镜

我问过我的老头,他是个老手,他说这很奇怪。我同意,因为我从来没有遇到过以这种方式使用 #defines 的问题,事实上它被认为是约定俗成的。


我试图将数字圈在一组括号中,即

#define LOC3 (3)

然而,这也不起作用。

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

提前致谢,MM25

奥西里斯
#define LOC3 3;

你需要删除;否则你的函数调用看起来像

spi_Setup(USART1, 3; , true, receiveBuffer, transmitBuffer);

这不是有效的 C 语法。

#define LOC3 3

将工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

std :: cout将uint8_t作为字符处理

来自分类Dev

将 std::uint8_t 作为 std::bitset 访问

来自分类Dev

固定宽度整数类型std :: uint8_t和std :: int8_t的实现,C ++

来自分类Dev

将list <T>或数组作为IEnumerable类型的参数传递

来自分类Dev

Cython:将python int转换为uint8_t

来自分类Dev

对于数组循环使用int或uint8_t?

来自分类Dev

Emscripten将uint8_t数组传递给javascript?

来自分类Dev

将double传递给需要uint8_t *的函数

来自分类Dev

memcpy将float变量放入uint8_t数组

来自分类Dev

将char *转换为uint8_t的数组(c)

来自分类Dev

将作为struct一部分的数组作为uint8_t指针传递给函数

来自分类Dev

从不同大小的整数转换为指针(将int作为const void *参数传递)

来自分类Dev

将Nullable整数(int?SomeValue = NULL)作为参数传递给存储过程

来自分类Dev

将uint8_t数组强制转换为uint32_t会发生什么?

来自分类Dev

如何将uint16_t值分配给uint8_t数组?

来自分类Dev

将字节反转的 uint64_t 复制到 uint8_t 数组

来自分类Dev

通过 JNI 传递 int16_t 和 uint8_t 值的问题

来自分类Dev

C-如何将int转换为uint8_t?

来自分类Dev

C ++:将无符号的long int转换为vector <uint8_t>原始数据

来自分类Dev

将Null整数作为参数传递

来自分类Dev

使用gcc和termios将uint8_t数组传递给Arduino

来自分类Dev

将数组作为参数传递

来自分类Dev

将数组作为参数传递

来自分类Dev

将数组作为参数传递

来自分类Dev

将数组作为参数传递

来自分类Dev

将参数作为数组传递

来自分类Dev

将数组作为参数传递

来自分类Dev

为什么将 uint8_t 与整数相乘会得到 0?

来自分类Dev

使用std :: uint8_t作为键初始化地图时的警告

Related 相关文章

热门标签

归档