你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
私有定义 private define
[复制链接]
alicekuonji
提问时间:2020-6-13 08:18 /
问答
是否解决:
cube生成的main文件里面有private macro private variables private define这些用户代码区,搜了一下macro是宏定义,variables是变量,那define是什么
评分
参与人数
1
ST金币
+5
收起
理由
STMCU
+ 5
查看全部评分
赞
0
收藏
0
评论
3
分享
发布时间:2020-6-13 08:18
举报
请先
登录
后回复
3个回答
lebment
回答时间:2020-6-14 11:21:48
a0a.1 0b0c
cubemx生成代码,用户也就是我们STM32开发者,把你#define的东西可以放在注释了的privite define那一行里面,也可以随便放哪,只要你放在USER CODE 注释行里面。你说的东西是在main.c,主要是方便我们规范化编程。
评分
参与人数
1
ST金币
+5
蝴蝶豆
+3
收起
理由
STMCU
+ 5
+ 3
查看全部评分
赞
0
评论
回复
支持
0
反对
1
安
回答时间:2020-6-14 20:37:41
a0a.1 0b0c
#define又称宏定义,标识符为所定义的宏名,简称宏。标识符的命名规则与前面讲的变量的命名规则是一样的。#define 的功能是将标识符定义为其后的常量。一经定义,程序中就可以直接用标识符来表示这个常量。是不是与定义变量类似?但是要区分开!变量名表示的是一个变量,但宏名表示的是一个常量。可以给变量赋值,但绝不能给常量赋值。
评分
参与人数
1
ST金币
+5
蝴蝶豆
+3
收起
理由
STMCU
+ 5
+ 3
查看全部评分
赞
0
评论
回复
支持
反对
fulin.work
回答时间:2020-6-17 17:27:31
a0a.1 0b0c
#define,宏定义,一般在C语言程序中用作“常量”的设置,在预处理的时候生效。
一般用法:
#define 标识符 字符串
简单解释是定义了一个“标识符”,这个标识符代表的含义就是“字符串”。之所以强调是在预处理的时候生效,是因为编译器,作预处理的时候,会将所有“标识符”替换为“字符串”,然后进行编译。
这样就会出现这种可能:
#define PI 3.14 //定义PI这个标识符,字符串是3.14
......
s=PI*R^2; //语句1
那么编译器在预处理会把语句1,替换为:
s=3.14*R^2;
这样当然是没问题的。
但是如果又额外定义了一个“PI1”的变量
#define PI 3.14 //定义PI这个标识符,字符串是3.14
......
s=PI*R^2; //语句1
s1=PI1*R^2 //语句2
猜猜会发生什么?
评分
参与人数
1
蝴蝶豆
+2
收起
理由
STMCU
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
评分
查看全部评分
评分
查看全部评分
一般用法:
#define 标识符 字符串
简单解释是定义了一个“标识符”,这个标识符代表的含义就是“字符串”。之所以强调是在预处理的时候生效,是因为编译器,作预处理的时候,会将所有“标识符”替换为“字符串”,然后进行编译。
这样就会出现这种可能:
#define PI 3.14 //定义PI这个标识符,字符串是3.14
......
s=PI*R^2; //语句1
那么编译器在预处理会把语句1,替换为:
s=3.14*R^2;
这样当然是没问题的。
但是如果又额外定义了一个“PI1”的变量
#define PI 3.14 //定义PI这个标识符,字符串是3.14
......
s=PI*R^2; //语句1
s1=PI1*R^2 //语句2
猜猜会发生什么?
评分
查看全部评分