是否有用于内存大小的预处理器常数


13

我希望我的编译器根据可用的闪存/程序空间排除一些代码。在我支持的库的演示代码中使用。而我当前的解决方案是使用#ifdef处理器类型。但我想更笼统一点,不必指定所有各种芯片。相反,如果有一个预处理程序常量声明可用大小,那将是很好的。

在gcc和avr-gcc不够流利的地方,我可能会期望找到一些类似于定义堆开始和结束的常量。

在案例中。是UNO和Leo都具有32K的Flash。但是Leo的核心库使用4K来支持USB,因此只有28K可用。我的图书馆的演示在UNO上已接近极限,我想根据可用的程序空间自动进行裁剪。


我看过执行此操作的程序,但找不到任何内容
TheDoctor 2014年

Answers:


10

找到io__.h适合您的微控制器的文件,在Linux上,该文件位于/usr/lib/avr/include/avr,在Windows 上,该文件的位置有些相似。

向下滚动至显示的部分/* Constants */。在那里定义了几个有趣的宏,FLASHEND这是您应该感兴趣的宏。您可以如下使用它:

#if FLASHEND > 0x8000
/* Include some extra code when sufficient flash is available. */

#endif
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.