[Armadillo:05018] Re: CON16 (シリアルインターフェース1)のリブート時のメッセージ抑制
Yasuhisa Nakamura
email@hidden
2010年 3月 12日 (金) 02:45:29 JST
中村です。
花田さん、ありがとうございます。
[Armadillo:05017]で花田さんwrote:
> ここでのconsoleは配列型であって、代入される初期化要素は
> 集成体型(= { 1, 2, 3 } のような書き方)であってよい、
> ということがポイントと思います。
>
> いい加減に探した中でGoogleキャッシュしか見つからなくて恐縮ですが…
> ↓の表6-6参照。
> http://74.125.153.132/search?q=cache:ZOrNzBKf5lcJ:www.imit.chiba-u.ac.jp/new-system/sr/man_hitachi_c/MAN/3000/03C3100D/C310095.HTM
表の中の
集成型 配列型 要素型がchar型
{定数式,...}※2,
{整数文字列リテラル}または整数文字列リテラル
と、
少し下にある説明の
# char型の配列型のオブジェクトは,整数文字列リテラルを
初期化指定子とすることで初期化されます。また,整数文字列
リテラルを囲む波括弧{ }は,省略できます。
のところがポイントですね。
なるほど・・・私が「普通は・・・・こう書きますよね?」
という書き方が、実は省略形だったと。。。
> { 'a', 'b', 'c', '\0' } // '\0'は省略もできます
> の省略形が
> { "abc" }
> であって、
> "abc"
> と書いて構わないと許した…結果的にどの書き方も正しい、ということだった筈。
てっきり、 { 'a', 'b', 'c', '\0' } と "abc" が同じものと
思い込んでおりました。
char abc[] = { 'a', 'b', 'c', '\0' }; と書くのが面倒なので、
これを char abc[] = "abc"; と書くことが許されている、と。
ところで、
char hoge[4] = { 'a', 'b', 'c', '\0' };
の場合の最後の'\0'は省略できて
char hoge[4] = { 'a', 'b', 'c' };
がOKというのは知っていましたが、
配列数の指定がない
char hoge[] = { 'a', 'b', 'c' };
の場合も後ろに'\0'が補われるんですね。
これもご紹介いただいたページに書いてありました。
(なんか不安がありますが・・・・)
# 私が書いた[Armadillo:05016]で、つい仕事上の悪い癖で
# 元メールを丸ごと長々と引用した無駄に長いメールに
# なってしまっていました。お許しください。
--
なかむら
armadillo メーリングリストの案内