Обсуждаем контроллеры компании Atmel.
Ответить

Atmel Snudio 7.2

Чт авг 17, 2023 14:42:39

Добрый день!

В среде "Atmel Studio 7.2" набераю код.
Получилось несколько файлов.
В одной паре "* С и .h" например некая библиотека,
в другой паре ещё что-то... Так вот понадобилось выводить
"Кириллицу" на Китайский " 1602 " и пришлось состряпать
функцию которая будет работать с массивом и CGRAM но не суть...
Суть в том что эта функция находится в одной паре мне её нужно
вызвать из другой пары, но тогда у меня массив в её аргументе
куда я его перередаю подсвечивается КРАСНЫМ и прилетает ошибка
типа не задекларирован массив функции...
Не хочется перетаскивать всё в ту пару откуда её " зову " лишняя заморочка.
Вот может кто знает вдруг есть какая небудь директива чтоб все переменные и массивы
были видны из любой точки проекта????
Естественно хеддеры вначале уже подключены.

Re: Atmel Snudio 7.2

Пн авг 21, 2023 12:02:54

Посмотрите на extern
https://www.google.com/search?client=fi ... ern+c+zpsr

Re: Atmel Snudio 7.2

Пн авг 21, 2023 13:39:56

Вообще-то, во всех книжках область видимости переменных описывается практически сразу. Например, во втором издании "Программирование на C" авторов Керниган и Ритчи - на странице 44. Если заниматься программированием без и до чтения этой книги, то имеет смысл попросить администраторов создать раздел на форуме с названием "Вопросы от aleksey chilov"

Re: Atmel Snudio 7.2

Пн авг 21, 2023 15:22:57

Если переменную будите использовать больше чем в двух местах, то проще создать файл нп. hardware.h
и вставить туда ссылки на объявления переменных и функций.
Код:
#ifndef HARDWARE_H_INCLUDED
#define HARDWARE_H_INCLUDED

extern  uint8_t     error; //Dla hranenija nomera oshibki

// Initializacija zeleza
extern void init_hardware(void);

#endif // HARDWARE_H_INCLUDED


В файлах просто делаете
Код:
#include "hardware.h"

Для чего нужны #ifndef #define #endif, думаю разберетесь сами.

Re: Atmel Snudio 7.2

Вт авг 22, 2023 01:43:01

21й век на дворе

Код:
#pragma once

extern  uint8_t     error; //Dla hranenija nomera oshibki

// Initializacija zeleza
extern void init_hardware(void);

Re: Atmel Snudio 7.2

Вт авг 22, 2023 08:27:13

#pragma once не является стандартом даже в 21 веке. Кроме того, использование стандартного метода дает возможность управляемого, селективного подключения
Ответить