|
Компилятор Gcc или так и должнобыть?, Почему то отказывается выполнять инструкциии |
|
|
|
May 2 2008, 04:17
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 29-12-04
Пользователь №: 1 738

|
Столкнулся с тем что GCC упорно не хочет выполнять следующее, вроде с синтаксисом нет никакого криминала комерческие компиляторы отрабатывают без проблем (Borlad c++ и пр.) не выдавая никаких ошибок и предупреждений
unsigned long int a[] = {1, 2, 3, 4, 5}; unsigned long int b[5];
void* ptr = a;
b[0] = *((unsigned long int*)ptr)++; b[1] = *((unsigned long long int*)ptr)++;
В обоих случаях отказывается делать инкремент указателя выдавая ошибку хотя здесь явно указатель приводится к указателю на заданный тип, пробовал указатель описать как указатель на тип char или int ситуация не меняется. С точки зрения синтаксиса вроде всё правильно .. пытался искать в стандарте Ansi C но нашел ничего .. Мож у кого есть какие мысли .. не исключаю что может и я что то делаю не коррекктно.. Конечно эту ситуацию можно обойти... Спасибо.
|
|
|
|
|
 |
Ответов
|
May 2 2008, 05:46
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(Олег. @ May 2 2008, 08:17)  Столкнулся с тем что GCC упорно не хочет выполнять следующее, вроде с синтаксисом нет никакого криминала комерческие компиляторы отрабатывают без проблем (Borlad c++ и пр.) не выдавая никаких ошибок и предупреждений Борланд - худший из всех имеющихся в природе компиляторов, и ссылаться на него как на образец по меньшей мере смешно. Цитата(Олег. @ May 2 2008, 08:17)  unsigned long int a[] = {1, 2, 3, 4, 5}; unsigned long int b[5];
void* ptr = a;
b[0] = *((unsigned long int*)ptr)++; b[1] = *((unsigned long long int*)ptr)++; Ты пишешь на С, а думаешь по-ассемблерному. Не должно быть в С-программе такого количества преобразований типов. Не пытайся "помочь" компилятору подобным способом - этим ты ему только мешаешь. Просто пиши программу, думая лишь об алгоритме, а об оптимизации компилятор позаботится сам.
|
|
|
|
|
May 2 2008, 07:13
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(777777 @ May 2 2008, 07:46)  Борланд - худший из всех имеющихся в природе компиляторов...  Не худший, но кривейший это точно - борлондячие продукты, что Cишные, что Паскалевские имеют свое "видение мира" и позволяют без труда писать всякую фигню, что, однако, позволило подсадить на них массу новичков считающих, что все так и должно быть  Цитата(umup @ May 2 2008, 08:48)  попробуйте так : А вот этого не надо, если в оригинальном варианте некоторые компиляторы формально что-могут сделать и оттделаться Warnigs, то тут уже явная ошибка. Цитата(Олег. @ May 2 2008, 06:17)  комерческие компиляторы отрабатывают без проблем (Borlad c++ и пр.) Про "и пр." это Вы для красного словца вверули.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
Олег. Компилятор Gcc или так и должнобыть? May 2 2008, 04:17 forever failure Видимо имеется ввиду это:
warning: use of cast exp... May 2 2008, 04:43 umup попробуйте так :
Код b[0] = *((u... May 2 2008, 06:48 ReAl Цитата(umup @ May 2 2008, 09:48) попробуй... May 2 2008, 08:33 ReAl Цитата(Олег. @ May 2 2008, 07:17) вроде с... May 2 2008, 08:08 umup ЦитатаА вот этого не надо, если в оригинальном вар... May 2 2008, 08:23 zltigo Цитата(umup @ May 2 2008, 10:23) какая ?
... May 2 2008, 08:38  aesok Цитата(zltigo @ May 2 2008, 12:38) Без ... May 2 2008, 08:44   zltigo Цитата(aesok @ May 2 2008, 10:44) А если ... May 2 2008, 08:48  ReAl Цитата(zltigo @ May 2 2008, 11:38) Имя ко... May 2 2008, 09:02   Олег. Я пробовал в Borland C++ Builder6, там всё проходи... May 2 2008, 09:36    777777 Цитата(Олег. @ May 2 2008, 13:36) Не искл... May 2 2008, 14:58     Олег. Да Вы в общем то правы. Да я пишу на С но всегда к... May 2 2008, 15:55      777777 Цитата(Олег. @ May 2 2008, 19:55) Да Вы в... May 2 2008, 16:09   zltigo Цитата(ReAl @ May 2 2008, 11:02) gcc в да... May 2 2008, 09:41 umup можно так :
Код b[0] = *(unsigned long... May 2 2008, 10:30 Олег. Да конечно так можно.. Я понимаю.. До меня дошло ч... May 2 2008, 11:52 Andreas1 поскольку только осваиваюсь в сях, а ситуация инте... May 2 2008, 17:12 AHTOXA Цитата(Andreas1 @ May 2 2008, 23:12) И де... May 2 2008, 17:35 ReAl Цитата(Andreas1 @ May 2 2008, 20:12) поск... May 2 2008, 19:15 Alex03 А если так:
Кодunuon
{
char *pc;
int *pi;
long... May 5 2008, 12:01 777777 Цитата(Alex03 @ May 5 2008, 16:01) А если... May 6 2008, 16:53  AHTOXA Цитата(777777 @ May 6 2008, 22:53) Так мо... May 6 2008, 18:45   777777 Цитата(AHTOXA @ May 6 2008, 22:45) А нель... May 7 2008, 04:18    AHTOXA Цитата(777777 @ May 7 2008, 10:18) Очень ... May 7 2008, 04:54     777777 Цитата(AHTOXA @ May 7 2008, 08:54) Собств... May 7 2008, 05:00      AHTOXA Цитата(777777 @ May 7 2008, 11:00) Вы тож... May 7 2008, 05:03       Сергей Борщ Цитата(AHTOXA @ May 7 2008, 08:03) Спасиб... May 7 2008, 06:48        777777 Цитата(Сергей Борщ @ May 7 2008, 10:48) М... May 7 2008, 07:38         ReAl Цитата(777777 @ May 7 2008, 10:38) Если у... May 7 2008, 09:30          777777 Цитата(ReAl @ May 7 2008, 13:30) Никто ни... May 7 2008, 11:46           ReAl Цитата(777777 @ May 7 2008, 14:46) Все эт... May 7 2008, 12:59         Сергей Борщ Цитата(777777 @ May 7 2008, 10:38) А вот ... May 7 2008, 09:51        AHTOXA Цитата(Сергей Борщ @ May 7 2008, 12:48) М... May 7 2008, 07:56 alexander55 Цитата(Олег. @ May 2 2008, 08:17) unsigne... May 7 2008, 10:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|