LINUX.ORG.RU

sdg


0

0

"view.c:696: warning: pointer targets in passing argument 2 of ‘strcat’ differ in signedness" #gcc -v Using built-in specs. Target: i386-asplinux-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,java,f95,ada --enable-java-awt=gtk --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --host=i386-asplinux-linux Thread model: posix gcc version 4.0.2 20051125 (Red Hat 4.0.2-8)

Несовсем понятно почему компилер gcc 4.1 не ругался. Как быть?


По-моему, совершенно ясное сообщение - разница в типах char, один unsigned, другой signed. Поставь явное преобразование аргумента к тому типу указателя, который хочет strcat. Или отключи это предупреждение: -Wno-pointer-sign, кажется.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

но ведь после преобразования там могут быть другие данные!
А в описаннии функций не написано что по умолчанию (signed/unsigned).
Помойму должно работать в обоих случаях.

NoName
() автор топика
Ответ на: комментарий от NoName

> но ведь после преобразования там могут быть другие данные!

Приведение типа указателя не меняем содержимое памяти в том месте, куда он указывает. Если меняется только signedness - то вообще не очень страшно.

> А в описаннии функций не написано что по умолчанию (signed/unsigned).

"просто char" - это, все-таки, какой-то определенный тип, либо signed char, либо unsigned char. Какой по дефолту - зависит от компилера/архитектуры, и регулируется ключом (-f[un]signed-char) в gcc.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.