Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> volatile char[] и функции работы со строками 
:(
    Опции темы
En_t_end
Дата 16.9.2005, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Стандартные функции работы со строками(strcmp, strcpy e.t.c) отказываются работать с volatile char[] - вероятно нужны особые функции, учитывающие расположение в памяти и особенности volatile. Что подскажете ?
PM MAIL ICQ Skype GTalk Jabber   Вверх
Orlan
  Дата 16.9.2005, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 10.6.2004
Где: Киев

Репутация: нет
Всего: 1



А зачем используется volatile, может проще добавить синхронизацию при помощи критических секций?
--------------------
А вы знали, что терапевт - это 1024 гигапевта или 1048576 мегапевтов
PM MAIL   Вверх
Mayk
Дата 16.9.2005, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



А если покастить?
Код

volatile char a[10]="hello";
volatile char b[10]="world";
strcpy((char*)a, (char*)b);

Добавлено @ 17:59
Ну или для любителей с++ кастингов
Код

volatile char a[10]="hello";
volatile char b[10]="world";
strcpy(const_cast<char*>(a), const_cast<char*>(b));

Или даже
Код

strcpy(const_cast<char*>(a), const_cast<const char*>(b));




--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Orlan
Дата 16.9.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 10.6.2004
Где: Киев

Репутация: нет
Всего: 1



Если покастить, то, думаю, теряется смысл volatile
Думаю, что strcpy не ожидает что ей на вход прийдет "an object can be modified in the program by something such as the operating system, the hardware, or a concurrently executing thread"
--------------------
А вы знали, что терапевт - это 1024 гигапевта или 1048576 мегапевтов
PM MAIL   Вверх
Mayk
Дата 16.9.2005, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Если что-то объявлено как volatile, то это не означает что оно является таким на самом деле в любой момент времени своего существования. Так, например, мы можем объвить volatile char currentDir[];, в котором будет хранится текущая директория. Логично предположить, что в начале надо прочитать в неё какую-то директорию, а потом запустить отделный поток, который будет её активно менять. Но до момента запуска никто не должен измянить содержимое currentDir'а, так что strcpy() и пр. навряд ли помешают.

Еще можно понадеятся на то, что авось проскочит. Хотя, конечно, авось - зверёк тот еще.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Helicopterr
Дата 18.9.2005, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: 2
Всего: 3



En_t_end
может удобнее не использовать квалификатор volatile и разместить массив в файле на жёстком?


--------------------
people can fly
PM MAIL   Вверх
En_t_end
Дата 19.9.2005, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Нет все спасибо, действительно в моем случае кастинг к const char* и char* безглючный метод.

PM MAIL ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.