c - 包含 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)
{
}
}
解决方案
头文件通常只包含函数的声明,而不是定义。
您没有使用 math.h 中声明的任何函数,因此它们所在的库不会链接到您的程序中。如果您使用其中之一,例如float b = sin(a)
,那么数学库的内容是必需的并被链接(假设您传递-lm
给 gcc 这样做)。
推荐阅读
- r - 如何为R中地图中的不同区域选择不同的主题
- django - 在 Django 中启动两个 http 服务器
- android - 更改下一个活动后应用程序崩溃问题?
- android - setTextAppearance - 尝试禁用单击时不适用于 MaterialButton
- mysql - 为什么 MariaDB 10.1.38 不创建表空间?
- python - 如果我想基于列来处理数据帧,我可以在函数 read_csv 中使用函数“排序依据”吗?
- java - 在我的登录函数中匹配数组列表第二个第三位的值时出错?
- reactjs - 如何在 Twilio Flex 网络聊天中保持聊天栏始终打开
- javascript - 根据 2 个值按多维数组分组
- electron - 在预加载脚本中调用 ipc 通信是一种好方法吗?