R>Корректно ли по стандарту С преобразование типов из void* в указатели на другие типы (неявное).
Тебе известны другие способы преобразования в С? Мне — нет.
А вообще подобные преобразования весьма широко используются в С. Другое дело, что ответственность за корректность таких преобразований лежит исключительно на программисте.
Здравствуйте, renton, Вы писали:
R>Помогите пожалуйста. Корректно ли по стандарту С преобразование типов из void* в указатели на другие типы (неявное).
Да.
R>Напр.:
R>void* var1;
R>char* var2;
R>...
R>StrCopy(var2, var1);//СОГЛАСУЕТСЯ ЛИ С ANSI C???
Зависит от того, что такое StrCopy.
R>Только пожалуйста, аргументированно!!!
T>Зависит от того, что такое StrCopy.
Ну, обычный char* StrCopy(char* param1, char* param2);
R>>Только пожалуйста, аргументированно!!! T>6.3.2.3/1 в стандарте.
А Вы могли бы дать мне ссылку на стандарт? А то я уже столько всего облазил, нигде найти не могу
Спасибо!!!
Re[3]: Срочно! Корректно ли в C преобр-е из void*
От:
Аноним
Дата:
03.12.02 09:47
Оценка:
Здравствуйте, renton, Вы писали:
R>Известны. Можно написать StrCopy(var2, (char*)var1); R>И это точно будет правильно. R>Вопрос в том, правильно ли неявное преобразование.
В Си — да. В Си++ преобразование указателя произвольного типа в void* может выполняться неявно, а обратные — только явно (рекомендуемая нотация — static_cast< char* >(var1)).
А>В Си — да. В Си++ преобразование указателя произвольного типа в void* может выполняться неявно, а обратные — только явно (рекомендуемая нотация — static_cast< char* >(var1)).
Супер, моя репутация спасена тьфу-тьфу-тьфу.
Но УМОЛЯЮ, дайте ссылку на стандарт, или вырезку из него!!!!!!!
(им. в виду ANSI C)
Мне нужно аргументировать свою (вроде правильную) точку зрения перед работодателем.
Спасибо еще раз!!
Здравствуйте, renton, Вы писали:
R>Привет Все! R>Помогите пожалуйста. Корректно ли по стандарту С преобразование типов из void* в указатели на другие типы (неявное).
Другизх способов в C дейсвительно нет.
Но для большей надежности можно
сделать проверку типов самому.
struct MyVARIANT
{
void* mData;
int mSize;
enum TYPE
{
eInt,
eLong,
// ...
} mType;
Здравствуйте, SL57, Вы писали:
R>>Корректно ли по стандарту С преобразование типов из void* в указатели на другие типы (неявное).
SL>Другизх способов в C дейсвительно нет.
Как уже было сказано, это утверждение не является верным, есть еще явные преобразования типов — приведения.
SL>