Когда использовать const void *?
У меня есть очень простая тестовая функция, которую я использую, чтобы выяснить, что происходит с квалификатором const.
int test(const int* dummy)
{
*dummy = 1;
return 0;
}
Это выдает мне ошибку с GCC 4.8.3. Но этот компилирует:
int test(const int* dummy)
{
*(char*)dummy = 1;
return 0;
}
Таким образом, кажется, что квалификатор const работает, только если я использую аргумент без приведения к другому типу.
Недавно я видел коды, которые использовали
test(const void* vpointer, ...)
По крайней мере для меня, когда я использовал void *, я склоненсимвол * для арифметики указателей в стеках или для трассировки. Как можетconst void * предотвратить функции подпрограммы от изменения данных, при которыхvpointer указывает?