サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
10: 2010-02-06 (土) 14:19:13 lina ソース 11: 2010-02-07 (日) 11:57:31 lina ソース
Line 307: Line 307:
-g01_getcmdlin_str_o0(int i, int n, void *p) -g01_getcmdlin_str_o0(int i, int n, void *p)
-g01_getcmdlin_str_m0_1(int j, int n, void *p) -g01_getcmdlin_str_m0_1(int j, int n, void *p)
 +
 +COLOR(blue){うっちゃんの予測を検証すべく、実験をしてみた}
 +
 +COLOR(red){ちなみにオイラの予想してたこと。intタイプと同じように、コード内に規定値を打ち込むような形式だと思ってた}
 + 例:
 + intタイプは戻り値として取得したコマンドラインパラメータを返してくれる。
 +       g = g01_getcmdlin_int_s(0);    // 0番目の引数を取得し、gに渡す
 + 省略可能の場合・・・
 +       g = g01_getcmdlin_int_o(0,100);    // 0番目の引数を取得し、もしなかったら規定値として
 +                                             100を返す
 +
 + この流れで行くとstrタイプも・・・・
 +       *g = g01_getcmdlin_str_s0(0);    // 0番目の文字型引数を取得し、gに渡す
 + 省略可能の場合・・・
 +       *g = g01_getcmdlin_str_s0(0,"イカ自身");    // 0番目の文字型引数を取得し、gに渡すが、
 +                                                       もし指定がなかったら規定値として
 +                                                       「イカ自身」という文字を返す
 +
 +しかし、実際には戻り値がないタイプだったのでこれは間違い。
 +
 +こんなコードを書いてみる。
 + #include <guigui01.h>
 + #include <stdio.h>
 +
 + unsigned char cmdusage[] = {
 +   0x86,  /* これは決まり文句なのでとりあえず変更しない */
 +   0x55,  /* 通常モード(引数名省略不可) */
 +
 +   0x0c, 2, 'o','p','t', 0x3c, 9, 0x01, 'i', 'o', 'n', '-', 'f', 'i', 'l', 'e',
 +
 +   0x40 /* 最後のこれも決まり文句なので変更しない */
 + };
 +
 + void G01Main()
 + {
 +   g01_setcmdlin(cmdusage);          //コマンドライン定義
 +
 +   char *buffer = g01_bss1a1;        //お便利バッファ2MBを宣言
 +   g01_getcmdlin_str_s0(0,100,buffer);    //引数受け取り
 +
 +   g01_putstr0(buffer);
 +   return;
 + }
 +
 +-これは問題ない。引数無指定ならUsageが表示される。
 +-opt:uniba-G! なんて引数を与えると、ちゃんと画面に表示されて終了する。
 +
 +-ここで、引数のタイプを省略可能にしてみる。  0x1c, 2, 'o','p','t', 0x3c, 9, 0x01, 'i', 'o', 'n', '-', 'f', 'i', 'l', 'e',
 +-このままコンパイルしても、エラーになってしまう。(引数指定と受け取り指定がズレるからかなたぶん)
 +-なので、受け取り側も省略可能タイプと指定。  g01_getcmdlin_str_o0(0,100,buffer);    //引数受け取り
 +-これでいままでと同じように動作する。(しいて違いを言えば、無指定の時、省略可能なのでUsage表示をしない)
 +
 +
 +うーん・・・やはり、intが特殊だったって法則でいいのかな。COLOR(blue){本来は規定値なんて概念はない。自分で戻り値を検証するコードを書け。・・・で。intだけは便利にしといたよ!・・・みたいな? www}
**g01_getcmdlin_fopen系 [#t3509916] **g01_getcmdlin_fopen系 [#t3509916]
Line 343: Line 397:
-g01_getcmdlin_fopen_o_0_4(int i) -g01_getcmdlin_fopen_o_0_4(int i)
-g01_getcmdlin_fopen_o_3_5(int i) -g01_getcmdlin_fopen_o_3_5(int i)
 +
 +
 +COLOR(blue){うっちゃんの予測を検証すべく、実験をしてみた}
 +
 +こんなコードを書く。
 + #include <guigui01.h>
 + #include <stdio.h>
 +
 + unsigned char cmdusage[] = {
 +   0x86,  /* これは決まり文句なのでとりあえず変更しない */
 +   0x55,  /* 通常モード(引数名省略不可) */
 +
 +   0x0c, 2, 'o','p','t', 0x0c, 9, 0x01, 'i', 'o', 'n', '-', 'f', 'i', 'l', 'e',
 +
 +   0x40 /* 最後のこれも決まり文句なので変更しない */
 + };
 +
 + void G01Main()
 + {
 +   g01_setcmdlin(cmdusage);          //コマンドライン定義
 +
 +   char *buffer = g01_bss1a1;        //お便利バッファ2MBを宣言
 +   g01_getcmdlin_fopen_s_0_4(0);    //引数受け取り&ファイルオープン
 +
 +   jg01_fread0_4(2 * 1024 * 1024, buffer); /* 最大2MB, 終端に0がつく */
 +   g01_putstr0(buffer);
 +   return;
 + }
 +
 +-まずこれは正常に動作した。引数は省略不可なので指定しないとUsageが表示される。(一種のエラーかな・・)
 +-次に、引数側を省略可能にした。つまりこう。 0x1c, 2, 'o','p','t', 0x0c, 9, 0x01, 'i', 'o', 'n', '-', 'f', 'i', 'l', 'e',
 +-引数を指定しないと跳んでしまう・・・・
 +-引数を前回と同じもので指定しても、エラーが返される。
 + debug: cmdlin_fopen: 4 56 test.txt
 + c_api: junk_fopen: error
 +
 +省略可能引数なので、それに合わせるべく、fopen側をイジる。つまり、g01_getcmdlin_fopen_o_0_4(0);
 +
 +-跳ばない。でもUsageを表示せずに終了(・・・これはええと。正しい動作なのかな???たぶん)
 +-引数(ファイル名)を指定すると、最初の引数省略不可の場合と同じ動作をしてくれる(つまり、正常動作?)
**g01_getcmdlin_argc [#t240815c] **g01_getcmdlin_argc [#t240815c]

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。