你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于Preprocessor symbol的疑问

[复制链接]
zhc 提问时间:2017-10-19 16:02 /
我用的处理器是STM32F107VCT6
在stm32f10x.h文件中看到如下内容:
#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)
  /* #define STM32F10X_LD */     /*!< STM32F10X_LD: STM32 Low density devices */
  /* #define STM32F10X_LD_VL */  /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */  
  /* #define STM32F10X_MD */     /*!< STM32F10X_MD: STM32 Medium density devices */
  /* #define STM32F10X_MD_VL */  /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */  
  /* #define STM32F10X_HD */     /*!< STM32F10X_HD: STM32 High density devices */
  /* #define STM32F10X_HD_VL */  /*!< STM32F10X_HD_VL: STM32 High density value line devices */  
  /* #define STM32F10X_XL */     /*!< STM32F10X_XL: STM32 XL-density devices */
  /* #define STM32F10X_CL */     /*!< STM32F10X_CL: STM32 Connectivity line devices */
#endif
/*  Tip: To avoid modifying this file each time you need to switch between these
        devices, you can define the device in your toolchain compiler preprocessor.

按照Tip的描述,在Preprocessor symbol中添加了STM32F10X_CL
工程编译没有问题,但是发现把STM32F10X_CL去掉,编译也没有问题

按照stm32f10x.h中的描述,编译应该会抱错啊
#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)
#error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"
#endif


请问为什么在Preprocessor symbol中不添加STM32F10X_CL也不会抱错呢?
收藏 1 评论5 发布时间:2017-10-19 16:02

举报

5个回答
随风飘扬 回答时间:2017-12-19 09:46:30
你确定哪里都没加吗?比如开发环境的参数设置里?

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

anobodykey 回答时间:2017-12-19 09:47:07
因为mdk可能会有一个默认的宏定义,你可以看下C/C++选项中Compiler control string中是否有一个宏定义

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

无薪税绵 回答时间:2017-12-19 11:51:41
看清楚,它们之间是(&&)与关系的。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

maxtch 回答时间:2017-12-19 12:16:20
很有可能这个设置是在 SVD 文件里面的,你选择设备之后 MDK 就自动从 SVD 文件里面读取了这个符号。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

harvardx 回答时间:2017-12-19 20:42:30
注意前面有个!

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版