реклама на сайте
подробности

 
 
> static variable
Jenya7
сообщение Apr 3 2016, 09:40
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Зачем локальную переменную делать статик? Если мы сохраняем ее в RAM то с тем же успехом ее можно сделать глобальной ну или статик на уровне файла.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Apr 8 2016, 08:45
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



может быть дядька Шилдт имел ввиду объектно-ориентированный подход, а не сам язык С++, который к объектно-ориентированному подходу достаточно перпендикулярен?
Я не понимаю, что может мешать в программе класса "мигалка светодиодом" использовать перегрузку операторов:
CODE
void print(char const * string);
void print(int number);

void test()
{
    print("I = ");
    print(123);
}
// вместо дающего точно такой же выходной код сишного
void print_string(char const * string);
void print_number(int number);

void test()
{
    print_string("I = ");
    print_number(123);
}

что мешает объявлять типы структур более короткой записью, без typedef:
CODE
struct a_t
{
    int B;
    int C;
};
a_t A;

// вместо дающего точно такой же выходной код сишного
typedef struct
{
    int B;
    int C;
} a_t;
a_t A;

что мешает использовать шаблоны
CODE
void send(void const * from, size_t size);

template<typename T>
inline void send(T & data) { send(&data, sizeof(data)); }

uint32_t A;
uint8_t B;
struct c_t { uint32_t A; uint8_t B; char Name[20]; } C;

void test()
{
    send(A);
    send(B);
    send(C);
}

// вместо дающего точно такой же выходной код сишного
void test1()
{
    send(&A, sizeof(A));
    send(&B, sizeof(B));
    send(&C, sizeof(C));
}

что мешает использовать объявления структур внутри структур
CODE
struct config_t
{
   struct module_a_t
   {
       ....
   };
   struct module_b_t
   {
      ....
   };
   module_a_t A;
   module_b_t B;
} Config;

config::module_a_t * pModule_A_cfg = &Config.A;
// вместо дающего точно такой же выходной код сишного
typedef struct
{
   ....
} module_a_config_t;
typedef struct
{
    ....
} module_b_config_t;
typedef struct
{
   module_a_config_t A;
   module_b_config_t B;
} config_t;
config_t Config;

module_a_config_t * pModule_A_cfg = &Config.A;


что мешает использовать хотя бы простейшие объекты?
CODE
class a_t
{
public:
    void do_process();
private
    ... какие-то данные ....    
}
a_t A, B;
void test()
{
    A.do_process();
    B.do_process();
}

// вместо дающего точно такой же выходной код сишного
typedef struct
{
    ... какие-то данные ....    
} a_t;
a_t A, B;
void do_process(a_t * data);

void test()
{
    do_process(&A);
    do_process(&B);
}


и таких примеров можно привести великое множество. Еще раз подчеркиваю - эти исходники дают абсолютно идентичный выходной код, но на С++ они короче, а значит их легче писать, в них труднее запутаться или допустить описку.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Baser
сообщение Apr 8 2016, 12:03
Сообщение #3


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(Сергей Борщ @ Apr 8 2016, 11:45) *
может быть дядька Шилдт имел ввиду объектно-ориентированный подход, а не сам язык С++, который к объектно-ориентированному подходу достаточно перпендикулярен?
Я не понимаю, что может мешать в программе класса "мигалка светодиодом" использовать перегрузку операторов:
что мешает объявлять типы структур более короткой записью, без typedef:
что мешает использовать шаблоны
что мешает использовать объявления структур внутри структур
что мешает использовать хотя бы простейшие объекты?

и таких примеров можно привести великое множество. Еще раз подчеркиваю - эти исходники дают абсолютно идентичный выходной код, но на С++ они короче, а значит их легче писать, в них труднее запутаться или допустить описку.

Тут я могу ответить только за себя - применять эти небольшие улучшения/расширения си, конечно можно, но я не вижу качественного улучшения. Поэтому и не применяю, тем более что накопилось много долгоиграющих проектов на разных МК под разными компиляторами, которые периодически нужно подкручивать и кидать куски кода туда-сюда. ANSI C поддерживает весь зоопарк применяемых мною инстументов, а вот плюсы - увы...
Тем более, что ошибки/опечатки в аналогах всех вышеупомянутых улучшений хорошо отлавливаются компиляторами и тут проблем нет.

А применение объектно-ориентированного подхода это уже отдельный вопрос и к вышеприведенным примерам отношения не имеющий, и на маленьких проектах ИМХО себя не оправдывающий.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   static variable   Apr 3 2016, 09:40
- - Baser   Цитата(Jenya7 @ Apr 3 2016, 12:40) с тем ...   Apr 3 2016, 10:31
|- - Jenya7   Цитата(Baser @ Apr 3 2016, 16:31) Для огр...   Apr 3 2016, 10:59
- - Baser   При "правильном" программировании все ст...   Apr 3 2016, 14:38
|- - adnega   Цитата(Baser @ Apr 3 2016, 17:38) При ...   Apr 4 2016, 06:22
|- - dxp   QUOTE (adnega @ Apr 4 2016, 12:22) Но так...   Apr 5 2016, 04:55
|- - adnega   Цитата(dxp @ Apr 5 2016, 07:55) Ну, с гло...   Apr 5 2016, 08:04
|- - Сергей Борщ   Цитата(adnega @ Apr 5 2016, 10:04) Разуме...   Apr 5 2016, 08:52
|- - adnega   Цитата(Сергей Борщ @ Apr 5 2016, 11:52) с...   Apr 5 2016, 09:02
- - Jenya7   спасибо. наконец то понял для чего это нужно.   Apr 4 2016, 05:50
- - Baser   Цитата(adnega @ Apr 4 2016, 09:22) Но так...   Apr 5 2016, 10:13
|- - Сергей Борщ   Цитата(Baser @ Apr 5 2016, 12:13) Для таб...   Apr 5 2016, 10:48
|- - Baser   Цитата(Сергей Борщ @ Apr 5 2016, 13:48) С...   Apr 5 2016, 12:08
||- - esaulenka   Цитата(Baser @ Apr 5 2016, 15:08) где гов...   Apr 7 2016, 07:03
|- - zltigo   QUOTE (Сергей Борщ @ Apr 5 2016, 13:48) ....   Apr 7 2016, 07:35
- - Baser   Цитата(esaulenka @ Apr 7 2016, 10:03) При...   Apr 7 2016, 08:50
- - Сергей Борщ   Я и мигалку светодиодов на плюсах пишу. В общем, с...   Apr 7 2016, 10:49
|- - dxp   QUOTE (Сергей Борщ @ Apr 7 2016, 16:49) Я...   Apr 8 2016, 05:31
- - ViKo   По-моему, в С так же можно использовать структуры,...   Apr 8 2016, 09:00
|- - Сергей Борщ   QUOTE (ViKo @ Apr 8 2016, 11:00) По-моему...   Apr 8 2016, 10:28
|- - ViKo   Цитата(Сергей Борщ @ Apr 8 2016, 13:28) В...   Apr 11 2016, 05:56
- - ViKo   А как называется свойство, когда функции с одинако...   Apr 8 2016, 11:33
|- - zltigo   QUOTE (ViKo @ Apr 8 2016, 14:33) А как на...   Apr 8 2016, 11:47
|- - Сергей Борщ   QUOTE (zltigo @ Apr 8 2016, 13:47) Писани...   Apr 8 2016, 12:52
|- - zltigo   QUOTE (Сергей Борщ @ Apr 8 2016, 15:52) И...   Apr 8 2016, 13:26
|- - Сергей Борщ   QUOTE (zltigo @ Apr 8 2016, 15:26) Не пон...   Apr 8 2016, 13:45
|- - zltigo   QUOTE "Ты видишь суслика? А он есть!...   Apr 8 2016, 14:11
- - Herz   Господа! Напоминаю, тема была открыта совсем н...   Apr 11 2016, 07:30


Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 02:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.014 секунд с 7
ELECTRONIX ©2004-2016