Защита переменных и функций в библиотеке, не имеющей класса
Если вы хотите иметь в библиотеке функции, которые может использовать только сама библиотека, или переменные, к которым нельзя обращаться извне, вы обычно делаете их закрытыми, записывая это в заголовочный файл:
class Lib{
public:
// Все это может быть доступно извне
void function1();
void function2();
int someNumber;
private:
// К этим двум нельзя получить доступ извне
void secretFunction();
int secretNumber;
};
У меня такой вопрос:
Я хочу написать эту библиотеку без использования классов. Как в этом случае защитить вещи от доступа откуда угодно?
@LukasFun, 👍0
1 ответ
Лучший ответ:
▲ 1
Если ваша библиотека реализована в одном файле .cpp, вы можете определить эти
переменные и функции в этом файле и дайте им static
квалификатор:
static int my_private_variable = 42;
static void my_private_function()
{
...
}
Очевидно, что в файле .h о них не должно быть упоминания.
Обратите внимание, что мы говорим о глобальных переменных. Локальные переменные уже скрыты внутри определяющей функции.
,
@Edgar Bonet
Смотрите также:
- Как работают массивы?
- Ошибка: "недопустимое использование нестатической функции-члена" при вызове функции из моего собственного класса-метода
- Как сбросить переменную непосредственно перед вводом функции?
- Почему большинство функций Arduino возвращают -1 вместо 0
- Используйте ISR внутри библиотеки более элегантно
- Функция управления сервоприводами
- Как объявить указатель на библиотеку arduino neopixels, чтобы настроить его в функции настройки с помощью динамических переменных?
- Как улучшить этот Код? (или как передать строку Char в функцию, чтобы она вела себя как переменная)
Именно то, что я искал. Проверьте этот вопрос: https://stackoverflow.com/questions/17554515/hiding-private-members-of-c-library/59093688#59093688 вы тоже ответили на это!, @LukasFun