[其他ST产品] STM32CubeIDE上的int32_t和uint32_t定义混淆

[复制链接]
 楼主| cutfall 发表于 2025-7-6 22:21 | 显示全部楼层 |阅读模式
本帖最后由 cutfall 于 2025-7-29 22:35 编辑

由于某些原因,STM32H7存在一些预定义类型,它将部分标准的32位整型量定义为"long"类型变量
这种16位时代遗留的问题导致,即使是像下面这样简单的函数也会产生错误和警告:
#include <stdio.h>
#include <stdint.h>
int main()
{
int32_t n = 2+2;
int *p = &n;
printf("Hello World, 2+2 = %d\n", n);
}
而其他IDE都不会出现这种情况。在编译代码时,会产生成百上千个错误和警告。
另外,像__INT_FAST32_TYPE__(定义为int)和__INT_LEAST32_TYPE__(定义为long int)这些类型定义之间也缺乏一致性。
我曾在IDE中通过取消定义和重新定义这些宏来解决这个问题。






51949686a85eb29795.png
LOVEEVER 发表于 2025-7-29 23:42 | 显示全部楼层
一定要避免这种问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部