Си. Необходимо ли явное приведение к void* ?
От: Аноним  
Дата: 24.01.12 13:49
Оценка:
void F(void *n);

..

int i = 5;

F(&i);             //Вызов №1


F((void*)&i);      //Вызов №2



Есть отличия между 1 и 2, которые могут привести к ошибкам во время исполнения?
Re: Си. Необходимо ли явное приведение к void* ?
От: Сыроежка  
Дата: 24.01.12 14:00
Оценка:
Здравствуйте, Аноним, Вы писали:


А>
А>void F(void *n);

А>..

А>int i = 5;

А>F(&i);             //Вызов №1


А>F((void*)&i);      //Вызов №2


А>



А>Есть отличия между 1 и 2, которые могут привести к ошибкам во время исполнения?


Согласно стандарту С (6.3.2.3) "A pointer to void may bbe converted to or from a pointer to any incomplete or object type. A pointer to any incomplete or object type may be converted to a pointer to void and back again; the result shall compare equal to the original pointer."

Поэтому можно обойтись без явного приведения типов.
Меня можно встретить на www.cpp.forum24.ru
Re: Си. Необходимо ли явное приведение к void* ?
От: cruelbob  
Дата: 24.01.12 21:01
Оценка:
Здравствуйте, Аноним, Вы писали:


А>
А>void F(void *n);

А>..

А>int i = 5;

А>F(&i);             //Вызов №1


А>F((void*)&i);      //Вызов №2


А>



А>Есть отличия между 1 и 2, которые могут привести к ошибкам во время исполнения?


Можно обойтись без явного приведения.
Twitter — http://twitter.com/Cruelbob
Блог — http://cruelbob.blogspot.ru/
Мыло — vlad.kolotvin@gmail.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.