-Wsign-conversionとかこれを含む-Wconversionだと教えてもらえました。-Wallに入れておいてもらってもよかったよね…

$ cat main.c
#include <unistd.h>

int main(void)
{
size_t x;
char buf[42];

x = read(0, buf, sizeof(buf));
return (x < 1);
}
$ gcc -Wsign-conversion main.c
main.c: In function ‘main’:
main.c:8:13: warning: conversion to ‘size_t’ {aka ‘long unsigned int’} from ‘ssize_t’ {aka ‘long int’} may change the sign of the result [-Wsign-conversion]
8 | x = read(0, buf, sizeof(buf));
| ^~~~

明示的にキャストすれば怒られない。

$ cat main.c
#include <unistd.h>

int main(void)
{
size_t x;
char buf[42];

x = (size_t) read(0, buf, sizeof(buf));
return (x < 1);
}
$ gcc -Wconversion main.c

$ gcc --version
gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Follow

-Wallがぜんぜんallじゃないの、いい加減なんとかして欲しい。
man ccとか長すぎて読みたくないんだよ!
QT: mastodon.zunda.ninja/@zundan/1
[Ref.]

zunda  
-Wsign-conversionとかこれを含む-Wconversionだと教えてもらえました。-Wallに入れておいてもらってもよかったよね… $ cat main.c #include <unistd.h> int main(void) { size_t x; char...

古のwarningがあったりいろいろあるらしい。確かに全部onにはできないな。

stackoverflow.com/questions/11

-Wall-allという楽しい名前のオプションの提案もあったらしい。
gcc.gnu.org/bugzilla/show_bug.

が、そんなことより-Wyada-yada-yadaが駄々っ子ぽくて気になる。

Sign in to participate in the conversation
Mastodon

Experimental private instance. Running on FreeBSD!