Здесь обсуждаются все вопросы, не попадающие под другие категории
R-r
Сообщение
R-r » 03 май 2004, 19:56
в чем разница между gcc & g++, последний почему-то ругается на char lport[4] = "\x00\xFF\xFF\x8b";
michael
Неотъемлемая часть форума
Сообщения: 434 Зарегистрирован: 12 апр 2004, 11:00
Откуда: г. Владивосток
Контактная информация:
Сообщение
michael » 03 май 2004, 20:09
Ты про нулевой символ в конце строки забыл.
Llama
Неотъемлемая часть форума
Сообщения: 9749 Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск
Сообщение
Llama » 03 май 2004, 22:37
R-r , в том, что последний - это компилятор C++ - как следнствие более строгие проверки. И еще было бы неплохо увидеть, как именно ругается.
Опыт растет прямо пропорционально выведенному из строя оборудованию
exe
Неотъемлемая часть форума
Сообщения: 860 Зарегистрирован: 28 ноя 2003, 21:08
Откуда: Минск
Сообщение
exe » 03 май 2004, 22:43
Возможно const char объявлять надо. Возможно
unsigned char, возможно const unsigned char.
Надо читать доку по g++ и тогда будет понятно. Компайлеры все такие,
вечно при переносе чего-нибудь да не так будет.
exe
Неотъемлемая часть форума
Сообщения: 860 Зарегистрирован: 28 ноя 2003, 21:08
Откуда: Минск
Сообщение
exe » 03 май 2004, 22:48
Блин а тут лажа
char lport[5 ] нада. \0 должен автоматически добавиться, я прав?
В общем пиши
const char * const lport = "...";
michael
Неотъемлемая часть форума
Сообщения: 434 Зарегистрирован: 12 апр 2004, 11:00
Откуда: г. Владивосток
Контактная информация:
Сообщение
michael » 03 май 2004, 22:50
О чем и речь. C, похоже, просто лишнии символы в массив не добавляет, а в C++ проверка строже. Хотя это еще от версии gcc зависеть должно. Они там все со стандартами мутят...
exe
Неотъемлемая часть форума
Сообщения: 860 Зарегистрирован: 28 ноя 2003, 21:08
Откуда: Минск
Сообщение
exe » 03 май 2004, 23:12
C тоже добавляет, но не проверяет. Это легко проверить написав
маленькие проги. Используй sizeof и strlen на другой строке.
char lport[4] = "0123";
fprintf(stdout, "strlen = %d\n", (int)strlen(lport));
fprintf(stdout, "sizeof = %d\n", (int)(sizeof(lport)));
Тока для g++ поменять на 5.