你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
私有定义 private define
[复制链接]
久远寺有珠
提问时间:2020-6-13 08:18 /
提示:
作者被禁止或删除 内容自动屏蔽
赞
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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
评分
查看全部评分
评分
查看全部评分
一般用法:
#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
猜猜会发生什么?
评分
查看全部评分