首页 > 解决方案 > 包含 math.h 库时程序内存不会增加

问题描述

我是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) 
    {
    }
}

标签: catmelstudioattiny

解决方案


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

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


推荐阅读