Article View: pl.comp.lang.c
Article #309894Re: W której wersji standardu C lub C++ pracujecie?
From: PawelS pawel(at)wbcd(dot)pl
Date: Thu, 29 Aug 2019 16:03
Date: Thu, 29 Aug 2019 16:03
48 lines
3389 bytes
3389 bytes
Maciek Godek pisze:
> W dniu środa, 14 sierpnia 2019 19:24:46 UTC+2 użytkownik PawelS
>
>> Prawda. Nie wiem czy do tego zmierzasz, prawdopodobnie tak, że -Wall
>> to wcale nie włącza wszystkich dostępnych dla gcc opcji -W***
>
> Tak, trzeba przyznać, że już sama nazwa jest myląca, no bo na moją znajomość języka angielskiego "all" oznacza wszystkie.
> Ale to jeszcze idzie przełknąć, zwłaszcza jak się wie o fladze -Wextra, która włącza dodatkowe warningi, których -Wall nie włącza.
Tak jak napisałem, jest to prawdopodobnie celowa nie konsekwencja:
int main() {
char buffdata[256];
char buffcopy[256];
/*unsigned*/ char *sp1, *sp2;
size_t ss;
strncpy(buffdata, "test\"1234\"test", sizeof(buffdata));
if ((sp1=strchr(buffdata,0x22))!=NULL && (sp2=strchr(sp1+1,0x22))!=NULL) {
ss=sp2-sp1;
if (sp2-sp1<sizeof(buffcopy)) strncpy(buffcopy, sp1+1, sp2-sp1-1);
else strncpy(buffcopy, sp1+1, sizeof(buffcopy));
printf("buffcopy=|%s|\n", buffcopy);
}
return 0;
}
test.c:16: warning: comparison between signed and unsigned
test.c:16: warning: passing argument 3 of '__builtin_strncpy' as unsigned due
to prototype
Włączenie -Wconversion oznaczałoby często w powyższym przypadku
stosowanie rzutowania (size_t), ewentualnie stosowanie dodatkowej
zmiennej dla obliczania długości ciągu znaków. Co ciekawe
kompilator nie zgłasza tutaj ostrzeżenia konwersji:
ss=sp2-sp1;
a sp1, sp2 (char *) są ze znakiem,
natomiast ss (size_t) jest bez znaku.
Zgodnie z wcześniejszym wynikiem kompilacji:
uint32_t f(int32_t x) {
return x*x;
}
x.c:3:13: warning: conversion to ‘uint32_t {aka unsigned int}’ from ‘int32_t
{aka int}’ may change the sign of the result [-Wsign-conversion]
return x*x;
Technical Details
Message-ID:
<5d67f75a$0$525$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!85.12.16.70.MISMATCH!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<a1fbe21b-aed9-4b32-9691-a824c4e31a21@trust.no1> <3f1215b5-3c16-4248-a74f-1b57d21d4c98@googlegroups.com> <5d505a6e$0$17364$65785112@news.neostrada.pl> <d897b352-477c-42c0-ae44-f2df4bda7361@googlegroups.com> <5d52e072$0$521$65785112@news.neostrada.pl> <dc11d608-88c5-4511-bd8d-9e1922cd5e30@googlegroups.com> <5d5443dc$0$17361$65785112@news.neostrada.pl> <4bcfa95e-aaba-445f-9efe-e9008040fb75@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!85.12.16.70.MISMATCH!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Date: Thu, 29 Aug 2019 18:03:37 +0200 From: "PawelS pawel(at)wbcd(dot)pl" <fake@email.org> User-Agent: Thunderbird 2.0.0.18 (X11/20081120) MIME-Version: 1.0 Newsgroups: pl.comp.lang.c Subject: Re: W której wersji standardu C lub C++ pracujecie? References: <a1fbe21b-aed9-4b32-9691-a824c4e31a21@trust.no1> <3f1215b5-3c16-4248-a74f-1b57d21d4c98@googlegroups.com> <5d505a6e$0$17364$65785112@news.neostrada.pl> <d897b352-477c-42c0-ae44-f2df4bda7361@googlegroups.com> <5d52e072$0$521$65785112@news.neostrada.pl> <dc11d608-88c5-4511-bd8d-9e1922cd5e30@googlegroups.com> <5d5443dc$0$17361$65785112@news.neostrada.pl> <4bcfa95e-aaba-445f-9efe-e9008040fb75@googlegroups.com> In-Reply-To: <4bcfa95e-aaba-445f-9efe-e9008040fb75@googlegroups.com> Lines: 48 Message-ID: <5d67f75a$0$525$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 89.231.96.70 X-Trace: 1567094618 unt-rea-b-01.news.neostrada.pl 525 89.231.96.70:39739 X-Complaints-To: abuse@news.neostrada.pl X-Received-Bytes: 3223 X-Received-Body-CRC: 3651725911 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit