请问为什么在Preprocessor symbol中不添加STM32F10X_CL也不会抱错呢?

2019-07-14 14:32发布

我用的处理器是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也不会抱错呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
vywyefswer
1楼-- · 2019-07-14 20:10
 精彩回答 2  元偷偷看……
xieweibin
2楼-- · 2019-07-14 23:27
看清楚,它们之间是(&&)与关系的。
wang222221
3楼-- · 2019-07-15 02:05
很有可能这个设置是在 SVD 文件里面的,你选择设备之后 MDK 就自动从 SVD 文件里面读取了这个符号。
daitz
4楼-- · 2019-07-15 02:29
注意前面有个!

一周热门 更多>