Страница 1 из 1

Atmel Snudio 7.2

Добавлено: Чт авг 17, 2023 14:42:39
aleksey chilov
Добрый день!

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

Re: Atmel Snudio 7.2

Добавлено: Пн авг 21, 2023 12:02:54
codenamehawk

Re: Atmel Snudio 7.2

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

Re: Atmel Snudio 7.2

Добавлено: Пн авг 21, 2023 15:22:57
codenamehawk
Если переменную будите использовать больше чем в двух местах, то проще создать файл нп. 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
DetSimen
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
Martian
#pragma once не является стандартом даже в 21 веке. Кроме того, использование стандартного метода дает возможность управляемого, селективного подключения