- это действительный
void *p = &X; /* some thing */
p += 12;
и если да, то на что указывает p? У меня есть (сторонний) код, который делает это (и компилируется чисто), и я предполагаю, что void * рассматривался как char *. Мой надежный K & R не работает (ish) по теме
EDIT: мое маленькое тестовое приложение отлично работает на gcc 4.1.1 и обрабатывает void * как char *. Но g++ barfs
Я знаю, как это сделать правильно. Мне нужно знать, нужно ли мне очищать эту базу кода, чтобы найти все места, которые она сделала.
BTW gcc -pedantic выдает предупреждение
Резюме:
Спецификация C неоднозначна. В нем говорится, что в терминах представления и использования в качестве параметров функции void * = char *. Но он молчал относительно арифметики указателя.
- gcc (4) разрешает это и рассматривает его как char *
- g++ отказывается от него
- gcc -pedantic предупреждает об этом
- vs2010 и c и С++ отказывается от него.