Time-stamp: "1999-11-07 15:25:16 yasuhide"

C プログラミング雑感

  1. 初中級者向けの本が少な過ぎる
  2. マクロは本当に便利なのか?
  3. 危険な memcpy
  4. longよりも大きな整数を使うには?
  5. links
  • 文字列リテラル?
  • C 言語による UNIX ネットワークプログラミング入門
  • コンピューターのページ
  • C言語 FAQ 日本語訳
    本家サイトは こちら
  • http://www.kdevelop.org
    ftp://ftp.kde.gr.jp/pub/kde/messages/others/kdevelop.po.gz
    
    SL
    http://adagio.miv.t.u-tokyo.ac.jp/~mita/linux/rpms.html
    [vine-users:015408]
    
    bindtextdomain()
    textdomain()
    http://developer.gnome.org/doc/GGAD/cha-startup.html
    

    1. 初中級者向けの本が少な過ぎる
    2. 大抵の入門書では、

      というのが問題点として目立つような気がします。

      さらに言えば、(この辺から UNIX 限定になりますが…)

      あたりになると、もはやどこから手をつければいいものやら…。
      (参考文献リストぐらい作れよ…それともそもそも存在しない?)

      自分が使っているツールの tar ball を眺めるしかないのかなぁ…。
      誰だって、日本語で分かりやすい解説が欲しいでしょ?
      info だけで出来るならそれは中級者と言っていいんじゃない?

      というわけで、 このページは将来「初心者 UNIX C programer 必見のページ」になるべく、 材料を集める集積所ということになります。

      おそらく、初心者向けの記述に改めるには、書き直しが必要だろうとは思います…。 でも、ネタがないと始まりませんよね。 それに、自分のつまづいた所はすぐに忘れてしまうだろうし、 半ば備忘録ですね。


    3. マクロは本当に便利なのか?
    4. 下の参考文献に上げた 『Cプログラミング診断室』 は…確かにいい文書だと思いますが…。
      一点気になったことを書きます。

      それは…。

      マクロにしちゃったら gdb じゃ読めねぇべ!

      この点 gtk+ の testgtk や、examples/helloworld2 はうまく出来てます。

      あと、コンパイルオプションで可変にする予定のない定数は、 const 修飾子を使っておき、適切なヘッダファイルで extern 宣言しておくといいのではないでしょうか…?

      どのように extern 宣言すべきかは、今は説明不能です。 (というか、それほど巨大なプログラムを組んだことがない…)。 自分なりの結論が出た時にはここに追記すると思うので、 どうかそれまでしばしお待ちを…。

      参考文献


    5. 危険な memcpy
    6. 今日はなぜか筆のノリがいいので、もう一発いっちゃいます。

      先日から linux-users ML その他で一人で大騒ぎしている、 GnomeICU と顔文字の関係なのですが…。 なんと文字コード変換を担当している kc.c は、 普通の ascii char 文字列を引数にしても落ちる可能性があることが判明。

      説明は…おいらの話を聞くくらいなら jman memcpy した方がいいでしょう。

      私が作成したサンプルプログラムはこんな感じ…。
      #include
      
      #ifdef KCONV
      #include"kc.h"
      #endif /* KCONV */
      
      int main ( void ) {
      
        char *a = "a";
      
        /* 結果を表示する */
        printf("%s\n\n", a);
      
      #ifdef KCONV
        str_toeuc(a);
        printf("%s\n",a);
      #endif /* KCONV */
      
        return 0;
      }
      
      …まさかおいらの環境が腐ってたなんてオチはないよなぁ…?

      From: Hisao Aoyama 
      Newsgroups: fj.comp.lang.c
      Subject: Re: inline assembler on gcc
      Date: 08 Jul 1999 20:12:04 +0900
      Message-ID: 
      
      gcc -S
      
      (gdb) info line 44
      Line 44 of "kc.c" starts at address 0x8048724 
         and ends at 0x804872f .
      (gdb) disassemble 0x8048724 0x804872f
      Dump of assembler code from 0x8048724 to 0x804872f:
      0x8048724 :      movl   0x8(%ebp),%eax
      0x8048727 :      movb   0xffffffff(%ebp),%dl
      0x804872a :      movb   %dl,(%eax)
      0x804872c :      incl   0x8(%ebp)
      End of assembler dump.
      (gdb) info registers 
           eax: 0xbffff0f1 -1073745679
           ecx:        0x0           0
           edx:  0x8048961   134515041
           ebx: 0x4000a3c8  1073783752
           esp: 0xbffff0c8 -1073745720
           ebp: 0xbffff8f8 -1073743624
           esi: 0xbffff0f0 -1073745680
           edi:  0x804845c   134513756
           eip:  0x8048724   134514468
        eflags:      0x212 IOPL: 0; flags: AF IF
      orig_eax: 0xffffffff          -1
            cs:       0x23          35
            ss:       0x2b          43
            ds:       0x2b          43
            es:       0x2b          43
            fs:       0x2b          43
            gs:       0x2b          43
      

    7. longよりも大きな整数を使うには?
    8. From: dohzono@hf.rim.or.jp (Kazuo Fox Dohzono)
      Newsgroups: fj.comp.lang.c
      Subject: Re: long よりも大きな整数を使うには?
      Date: 26 Oct 1999 00:03:07 JST
      Message-ID: <7v20c2$57p$1@news2.na.rim.or.jp>
      
      GNU MP
      
      From: "Yasushi Kurokawa" 
      Newsgroups: fj.comp.lang.c
      Subject: Re: longよりも大きな整数を使うには?
      Date: Mon, 25 Oct 1999 23:20:15 +0900
      Message-ID: <7v1p2o$1hn$1@newshost.yyy.or.jp>
      
        書籍で良かったら、次の本に簡単なライブラリが載っています。書籍のままで
      大体1,000桁(10進)程度、基本型を拡張する事で多分1,000,000桁(10進)ぐらいは
      いけると思います。
      
      ・奥村晴彦著、「C 言語による最新アルゴリズム事典」、技術評論社刊
      
      http://www.vector.co.jp/soft/data/prog/se002453.html
      
      LB for Windows95
      http://www.forest.impress.co.jp/program.html
      

    戻る トップページに飛ぶ

    メールは dasen@typhoon.co.jp まで。