0

我是Atmel世界的新手。曾几何时,我可以用Visual Studio编写和编译 C,但有点不习惯。

所以我试图了解微控制器ATTINY1616中的内存使用情况。我打开了 Atmel 工作室,创建了一个 C 可执行项目并选择了正确的微控制器。我构建了其中几乎没有任何内容的项目,并看到程序内存是154 bytes. 这是我的底线。

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

/*
* GccApplication2.c
*
* Created: 12/20/2018 9:21:43 PM
* Author : joely
*/ 

#include <avr/io.h>
#include <math.h>

int main(void)
{ 
    float a = 2.000678f;
    /* Replace with your application code */
    while (1) 
    {
    }
}
4

2 回答 2

3

头文件通常只包含函数的声明,而不是定义

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

于 2018-12-21T02:38:02.087 回答
0

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

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

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

于 2018-12-28T17:04:29.370 回答