組み込みと呼ばずにエンベッドと人は言う
 
 
 
 
Ads by Google
 
 
【--/--/-- --:--】
 
 
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

 
 
 
▲TOP
 
 
 
 
コンパイラに嫉妬したこともありました
 
 
【2008/12/15 00:48】
 
 
上でも少し書きましたがたとえば本ブログ「無責任技術者の日記」もはてなでブックマーク登録されていまして、中には「偉い人」とか言っていただける方までいます。

が、本人そんなに偉くないです。その証明今からします
(影の声:いや、「何が」偉いとは皆さん書いてないんだなこれが)

とりあえず、以下のプログラムを見て下さい。mainが適当なのは勘弁下さい。


int
is_upnp_book_good(int *price)
{
*price = 3480;

return 0; // 良い訳無いジャン!
}

int main(void)
{
int price;

printf("UPnP入門って");
if (is_upnp_book_good(&price))
printf("いい本だよ\n");
else
printf("ダメ本だよ\n");
printf("お値段は %d 円です。\n",price);

return 0;
}

これ、コンパイルするとモノによっては「main関数のpriceが初期化されてないよ!」とダメ出しする奴がいます(特にis_upnp_book_goodが別ファイルだったりすると)。

で、組み込み系のシステムなんかの場合ですと、そのダメ出し無視してコーディングを続けます。というのも、呼び出した先の関数で問題なく設定されていますので、コンパイラ黙らせるためだけのコードなんか入れたくないとか思っていた時期もあったんですえーえー。

カナーリ以前にコンパイラのこういうダメ出しを極端に嫌う人がいまして、8bit系の組み込みとかやっていた癖で上記のようなことすると、いろいろ言われていたことがありました。

「俺とコンパイラどっちを信用するんだ!」
「コンパイラ」

…。

この時、少しだけNice boat.の気持ちが理解できました(ま、スクイズ放送よりかなり前の話なんですけどね)。


テーマ:プログラミング - ジャンル:コンピュータ

 
 
 
▲TOP
 
 
 
 
この記事に対するコメント
 
 
初期値
細かい話で恐縮です。
int price = 0;
と書かない理由は何でしょうか。
初期値格納ROM領域の節約ですか?
【2008/12/18 00:01】 URL | 通りすがり #- [ 編集]


通りすがり さん、はじめまして。コメントありがとうございました。
返事が遅れて申し訳ありませんでした。

組み込みなんかで、全プログラムこっち持ちの場合ですと、書く理由が逆に無いんじゃないのかなぁと思っていたりします。
【2008/12/21 06:46】 URL | はまだ #- [ 編集]

 
 
 
▲TOP

 
 
 
 
この記事に対するコメント投稿
 
 















 
 
 
▲TOP

 
 
 
 
この記事に対するトラックバック
 
 
トラックバックURL
→http://khamada.blog14.fc2.com/tb.php/242-c13c1239

 
 
 
▲TOP