c путаница функциональности программы
Я довольно новичок в программировании на c, и у меня есть эта следующая программа для degub. Проблема в том, что я понятия не имею, что вообще значат эти строки кода. Может ли кто-нибудь указать мне направление, которое они имеют в виду с точки зрения синтаксиса / функциональности? Что делает код? Код скомпилирован с MPLab C30 v3.23 или выше.
fractional abcCoefficient[3] __attribute__ ((space(xmemory))); /*ABC Coefficients loaded from X memory*/
fractional controlHistory[3] __attribute__ ((space(ymemory))); /*Control History loaded from Y memory*/
fractional kCoeffs[] = {0,0,0}; /*Kp,Ki,and Kd gains array initialized to zero*/
4 ответа
Эти строки объявляют переменные; нет кода выполнения, связанного с тем, что вы вставили.
Среда, для которой предназначен этот код, понимает, что fractional
это тип; либо в том же файле, либо в заголовке, который этот файл включает (прямо или косвенно), fractional
будет определяться с typedef
заявление. В ваших примерах каждая из переменных является массивом из трех fractional
типы.
__attribute__ ((space(?memory)))
Записи - это атрибуты, которые компилятор, предназначенный для построения, понимает и влияет на то, как управляются переменные. Вы можете обратиться к документации компилятора для платформы, которую вы используете.
Смотрите эту страницу, чтобы узнать о __attribute__
в gcc (однако я не вижу space(xmemory)
вариант там, обратитесь к документации вашего компилятора, если это не GCC. Если это так, то space()
может быть макросом).fractional
также пользовательский тип, поиск typedef
определения для дробного.
По сути, код создает кучу массивов типа fractional
, Первые два используют расширение атрибута gcc (или любой другой компилятор, который вы используете), а последний инициализируется равным 0 в каждой позиции.
Похоже, что "дробный" - это пользовательский тип, где-то ищите его typedef, и он должен помочь вам начать с того, что вы ищете. Я ожидаю, что это объявления переменных.
Макросы создаются с использованием директивы препроцессора "#define", поэтому вы можете найти где-нибудь код "#define space(x)", чтобы узнать, что он делает. Удачи.
Первые две строки объявляют массивы с тремя элементами в каждой. Тип является fractional
, который, вероятно, является typedef (для структуры с числителем и знаменателем?). Комментарии предполагают, что данные хранятся в другом пространстве памяти, возможно, в некотором роде Flash.
Так что программа вроде бы для встроенной системы.