ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
170830
abivan (30.10.2009 20:34 - 20:36, просмотров: 2636)
C30 и void** че за на warning: dereferencing type-punned pointer will break strict-aliasing rules на приведение (void**) void func(void**p); void main(){ char *p; func((void**)&p); // warning func((void*)&p); // все OK } func((void**)&p); это проходит без предупреждения в keil, iar, MSQC2.5(90х) а вот в gnucc pic30 нет. далее в книге кернигана пример http://www.intelst …6su/KR/ch5kr.html#p511 допускает приведение void** #define MAXLINES 5000 /* максимальное число строк */ char *lineptr[MAXLINES]; /* указатели на строки текста */ void qsort(void *lineptr[], int left, int right, int (*comp)(void *, void *)); int numcmp(char *, char *); /* сортировка строк */ main(int argc, char *argv[]) { int nlines; /* количество прочитанных строк */ int numeric = 0; /* 1, если сорт. по числ. знач. */ if (argc > 1 && strcmp(argv[1], "-n") == 0) numeric = 1; if ((nlines = readlines(lineptr, MAXLINES)) >= 0) { qsort((void **) lineptr, 0, nlines-1, (int (*)(void*,void*))(numeric ? numcmp : strcmp)); writelines(lineptr, nlines); return 0; } else { printf("Bведено слишком много строк\n"); return 1; } } вот еще упоминание про void** http://www.prog-ga …u.visual.cpp/3366.html так как же быть?