僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
clangを入れた(gccを入れてない) jessie(x86_64)と FreeBSD 11 CURRENT(amd64)で、 どちらも 昨日のコードに警告が出た。
$ cc --version Debian clang version 3.5.0-9 (tags/RELEASE_350/final) \ (based on LLVM 3.5.0) Target: x86_64-pc-linux-gnu Thread model: posix $ uname -a Linux $HOST 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt2-1 \ (2014-12-08) x86_64 GNU/Linux
$ cc -Weverything -o dog dog.c dog0.c:5:20: warning: implicit conversion changes \ signedness: 'int' to 'char' [-Wsign-conversion] dog[0] = 0xe7 ; ~ ^~~~ dog0.c:6:20: warning: implicit conversion changes \ signedness: 'int' to 'char' [-Wsign-conversion] dog[1] = 0x8a ; ~ ^~~~ dog0.c:7:20: warning: implicit conversion changes \ signedness: 'int' to 'char' [-Wsign-conversion] dog[2] = 0xac ; ~ ^~~~ 3 warnings generated.
次のようにすると警告なしになった。
$ diff dog.c dog1.c 5,7c5,7 < dog[0] = 0xe7 ; < dog[1] = 0x8a ; < dog[2] = 0xac ; --- > dog[0] = (char) 0xe7 ; > dog[1] = (char) 0x8a ; > dog[2] = (char) 0xac ;
char の判定も、このように書いてやっと
clangの警告が出なくなった。
ちなみに3dは関係なく削除。
#include<stdio.h> #define SIGN_NUM (char) 129 int main() { unsigned char ex_uc = (unsigned char) SIGN_NUM; signed char ex_ac = (signed char) SIGN_NUM; char im_c = SIGN_NUM; printf("unsignd char:%d\n", ex_uc); printf("signed char:%d\n", ex_ac); printf("implict char:%d\n", im_c); return 0; }
FreeBSD 11.0-CURRENT r277866 で make buildworldした
結果、4844分6.591秒かかったらしい。
80時間と44分余り、3日と8時間44分6.6秒。
さて、時刻合わせが済んだら make buildkernelせねば。
こちらは予想で21時間くらい?
一晩IP Unreachableだった。ntpdateしたら3秒ほど進みすぎていた。
make buildkernelは391分3.885sで終了した。
sigh_test は、次のように書くと警告はなかった。
#include<stdio.h> #define SIGN_NUM 129 int main() { unsigned char ex_uc = SIGN_NUM; signed char ex_ac = (signed char) SIGN_NUM; char im_c = SIGN_NUM; printf("unsignd char:%d\n", ex_uc); printf("signed char:%d\n", ex_ac); printf("implict char:%d\n", im_c); return 0; }
デフォルトがunsigned char だから、なのかもしれない。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。