Память программы не увеличивается при включении библиотеки math.h - PullRequest
0 голосов
/ 21 декабря 2018

Я немного новичок в мире Atmel .Когда-то я мог написать и скомпилировать C с помощью Visual Studio , но я немного потренировался.

Поэтому я пытаюсь понять, как используется память в микроконтроллере 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) 
    {
    }
}

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Поэтому после того, как я спросил некоторых друзей, имеющих опыт работы с микроконтроллерами, я нашел решение.

В Atmel Studio вам нужно перейти в Project -> Свойства приложения ---> Цепочка инструментов и Изменить оптимизацию на none.

Затем он распознает мои числа с плавающей точкой и сохраняет их в памяти программ, а когда atan () используется для выполнения вычисления, он также заполняет пространство тем же кодом, приведенным выше.

0 голосов
/ 21 декабря 2018

Заголовочные файлы обычно содержат только объявления функций, а не определения .

Вы не используете ни одну из функций, объявленных в math.h, поэтомубиблиотека, в которой они находятся, не будет связана с вашей программой.Если вы используете один из них, например, float b = sin(a), то содержимое математической библиотеки является обязательным и связано (при условии, что вы передаете -lm в gcc, чтобы сделать это).

...