gcc & g++

Здесь обсуждаются все вопросы, не попадающие под другие категории
R-r

gcc & g++

Сообщение R-r »

в чем разница между gcc & g++, последний почему-то ругается на char lport[4] = "\x00\xFF\xFF\x8b";

michael
Неотъемлемая часть форума
Сообщения: 434
Зарегистрирован: 12 апр 2004, 11:00
Откуда: г. Владивосток
Контактная информация:

Сообщение michael »

Ты про нулевой символ в конце строки забыл.

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

R-r, в том, что последний - это компилятор C++ - как следнствие более строгие проверки. И еще было бы неплохо увидеть, как именно ругается.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
exe
Неотъемлемая часть форума
Сообщения: 860
Зарегистрирован: 28 ноя 2003, 21:08
Откуда: Минск

Сообщение exe »

Возможно const char объявлять надо. Возможно
unsigned char, возможно const unsigned char.

Надо читать доку по g++ и тогда будет понятно. Компайлеры все такие,
вечно при переносе чего-нибудь да не так будет.

Аватара пользователя
exe
Неотъемлемая часть форума
Сообщения: 860
Зарегистрирован: 28 ноя 2003, 21:08
Откуда: Минск

Сообщение exe »

Блин а тут лажа

char lport[5] нада. \0 должен автоматически добавиться, я прав?

В общем пиши
const char * const lport = "...";

michael
Неотъемлемая часть форума
Сообщения: 434
Зарегистрирован: 12 апр 2004, 11:00
Откуда: г. Владивосток
Контактная информация:

Сообщение michael »

О чем и речь. C, похоже, просто лишнии символы в массив не добавляет, а в C++ проверка строже. Хотя это еще от версии gcc зависеть должно. Они там все со стандартами мутят...

Аватара пользователя
exe
Неотъемлемая часть форума
Сообщения: 860
Зарегистрирован: 28 ноя 2003, 21:08
Откуда: Минск

Сообщение exe »

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.

Ответить