| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > volatile char[] и функции работы со строками |
| Автор: En_t_end 16.9.2005, 17:17 |
| Стандартные функции работы со строками(strcmp, strcpy e.t.c) отказываются работать с volatile char[] - вероятно нужны особые функции, учитывающие расположение в памяти и особенности volatile. Что подскажете ? |
| Автор: Orlan 16.9.2005, 17:36 |
| А зачем используется volatile, может проще добавить синхронизацию при помощи критических секций? |
| Автор: Mayk 16.9.2005, 17:57 | ||||||
А если покастить?
Добавлено @ 17:59 Ну или для любителей с++ кастингов
Или даже
|
| Автор: Orlan 16.9.2005, 18:01 |
| Если покастить, то, думаю, теряется смысл volatile Думаю, что strcpy не ожидает что ей на вход прийдет "an object can be modified in the program by something such as the operating system, the hardware, or a concurrently executing thread" |
| Автор: Mayk 16.9.2005, 18:23 |
| Если что-то объявлено как volatile, то это не означает что оно является таким на самом деле в любой момент времени своего существования. Так, например, мы можем объвить volatile char currentDir[];, в котором будет хранится текущая директория. Логично предположить, что в начале надо прочитать в неё какую-то директорию, а потом запустить отделный поток, который будет её активно менять. Но до момента запуска никто не должен измянить содержимое currentDir'а, так что strcpy() и пр. навряд ли помешают. Еще можно понадеятся на то, что авось проскочит. Хотя, конечно, авось - зверёк тот еще. |
| Автор: Helicopterr 18.9.2005, 21:23 |
| En_t_end может удобнее не использовать квалификатор volatile и разместить массив в файле на жёстком? |
| Автор: En_t_end 19.9.2005, 12:25 |
| Нет все спасибо, действительно в моем случае кастинг к const char* и char* безглючный метод. |