当包含math.h库时,程序内存不会增加

时间:2018-12-21 02:32:17

标签: c atmelstudio attiny

我是 Atmel 领域的新手。很久以前,我可以用 Visual Studio 编写和编译C,但是有点不实际。

所以我试图了解微控制器 ATTINY1616 中的内存使用情况。我开了Atmel工作室,创建了一个C可执行项目,然后选择了正确的微控制器。我构建了几乎没有内容的项目,并看到程序存储器为grep -n -B 1 'The user' a.txt # Print each line matching 'The user' and one line preceding it, the -n flag prefixes output with line number egrep -v '^-' # The use of grep -B causes grep to separate match groups with '--', we want to disregard those lines sed -r 's/^([0-9]+).*/\1d/' # Extract the line numbers and with them create sed delete commands sed -f - a.txt # and finally feed those commands to sed, operating on your input file 。这是我的基线。

现在,我尝试添加行154 bytes,以查看程序内存使用量是否会增加。没有。然后,我尝试在#include <math.h>中添加float a = 2.000678f;。建立项目后仍然没有增加。我在这里误会什么?

main

2 个答案:

答案 0 :(得分:3)

头文件通常仅包含功能的声明,而不包含定义

您没有使用math.h中声明的任何函数,因此它们所驻留的库不会链接到您的程序中。如果您使用其中之一,例如float b = sin(a),则数学库的内容是必需的并且已链接(假设您将-lm传递给gcc来这样做)。

答案 1 :(得分:0)

因此,在询问了一些具有微控制器经验的朋友之后,我找到了解决方案。

在Atmel Studio中,您需要转到Project-> Application Properties ---> Toolchain,并将优化更改为无。

然后,它识别我的浮点数并将它们存储在程序内存中,当使用atan()进行计算时,它也用上面的相同代码填充空间。