Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: кретинческий вопрос про volatile  (Прочитано 5592 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Копенгаген
Гость
« : 29-08-2007 15:50 » 

Вопросы к знатокам. Вероятно посетителям раздела Drivers доводилось хоть один раз написать подобное объявление:
typedef struct {
    volatile ___membertype___ ___member___;
    volatile ___membertype___ ___member___;
    volatile ___membertype___ ___member___;
    .......................
    volatile ___membertype___ ___member___;
} ___stryct_type___;
После чего код, работающий с каждым мембером, завсегда будет правильно понят компилятором.

Другой пример volatile, уже при объявлении экземпляра структуры. Если volatile забыл, все - туши свет.
volatile ___struct_type___ ___struct_name___;

Меня интересует, можно ли объвить в заголовнике что-то вроде

typedef volatile struct
{
___membertype___ ___member___;
___membertype___ ___member___;
___membertype___ ___member___;
___membertype___ ___member___;
} ___vol_str_type___;
и забыть о проблемах навсегда? Кто сталкивался с подобными моим мечтами?
« Последнее редактирование: 29-08-2007 15:53 от Копенгаген » Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 29-08-2007 16:38 » 

судя по MSDN-у можно... там встречается пример
For example, the following declarations are legal:
  typedef volatile int VI;
  const int ci;
These declarations are not legal:
  typedef int *i, volatile *vi;
  float f, const cf;
первое оч похоже на то что надо)

и http://www.microchip.ru/phorum/read.php?f=2&i=114410&t=114349&v=f
вопрос будет ли от этого нужный эффект..)
« Последнее редактирование: 29-08-2007 16:59 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Копенгаген
Гость
« Ответ #2 : 14-09-2007 14:05 » new

В стандарте Си описаны const и volatile, как допустимые модификаторы (или квалификаторы, гы! Ага ), причем ЛЮБЫХ (т.е. производных тоже) типов.
Проверил с помощью MS VC++ 6.0 и emVC++ 4.0 - сглатывают молча. В таком случае мне необъяснима любовь объявлять volatile КАЖДЫЙ мембер. Во всяком случае, по (окружающим меня) исходникам - это массовое явление. Зачем?  С ума сойти...

PS: Я долго молчал с  ответом, sorry, понятно, что вопрос не критический. Улыбаюсь))
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines