关于Preprocessor symbol的疑问
我用的处理器是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也不会抱错呢?
你确定哪里都没加吗?比如开发环境的参数设置里? 因为mdk可能会有一个默认的宏定义,你可以看下C/C++选项中Compiler control string中是否有一个宏定义 看清楚,它们之间是(&&)与关系的。 很有可能这个设置是在 SVD 文件里面的,你选择设备之后 MDK 就自动从 SVD 文件里面读取了这个符号。 注意前面有个!
页:
[1]