トップ «前の日記(2002-04-05) 最新 次の日記(2002-04-07)» 編集

今日のなんでやねん


2002-04-06 [長年日記]

おいおい…

一昨日のレビューで見かけたソースの一部を要約したもの.

char *p = "hogedayo.hagejyanaiyo";
char a[ARRAY_SIZE];

memset(a, 0x00, ARRAY_SIZE);
memcpy(a, p, ARRAY_SIZE);

/* その後,str系関数にaを渡す */

こんな感じのソースを書いているのだ.ふつーは

char *p = "hogedayo.hagejyanaiyo";
char a[ARRAY_SIZE];

strncpy(a, p, ARRAY_SIZE - 1);
a[ARRAY_SIZE - 1] = '\0';

/* その後,str系関数にaを渡す */

こうじゃねー?*1 と指摘したがどうやらオレが何を言いたいのか理解してもらえなかった模様.

-1って何ですか?

と聞かれてしまった…

その人の上司とおぼしき人が

aの領域が十分大きいから,最後の1文字までmemsetでコピーされるなんてことはあり得ない,という気持ちも分かるけどナントカカントカ…

なーんてフォローしていたが

オレにはサッパリ分からんね

使い捨てのプログラムじゃないんだから…

*1 strncat使えば? という気もするが今回は-1するところがミソなので…

おいおいパート2

昨日のレビューで見かけたソースの一部を要約したもの.

int hoge(int x)
{
    int y;

    /* なにやらいろいろ処理 */

    /* ○月◇日 追加 */
    int z;           /* なにーーーーー! */

いったいいつからHP-UXのCコンパイラはこんなソースを通すようになったのか? もしかして,コンパイルは失敗しているんだけど,ずーっと前のオブジェクトファイルが残っててそれがリンクされているんではなかろうか.いや,ひょっとしたらコンパイラがC++だったりして…

int z;

どうやらC99ならOKになったらしい.で,HP C/HP-UX Reference ManualによるとHP-UXのCコンパイラでもこのfeatureがサポートされているらしい.

でも実際にコンパイルしてみるとエラーになるんだよなぁ.

ちなみにgccはなんでもアリアリだからな.どんなコードが通っても驚きはしないぜ.

就職

日頃巡回しているページの作者の中に結構な割合で「この春就職」という人がいてちょっと驚き.

GNU screenを使い倒せ!

これもメモ.あとで読む.

今日も出社

なのでもう寝る.

どういうことよ?

おいこら,10時からっつーから土曜日だってーのに早起きして会社に来てやったっつーのによー,担当者がまだ来てません?

どーいうことだ,コラ!

もやはやる気NULLですな.

っつか

マジで

すんげーヒマなんですけど

オレの土曜日を返せ.人の土曜日を奪っておいて自分はのうのうと遅刻.その神経をなんとかしろ.バカ.お前らのような輩が作っとるからクサったシステムが出来上がってんじゃねーの?

本日のツッコミ(全12件) [ツッコミを入れる]
よっしぃ (2002-04-06 01:46)

この-1の意味の分からぬとわ!お手伝いも大変ですね、ご愁傷様です。<br>無事ドナドナから帰ってこれるのだろうか...

どなどなされなかったひと (2002-04-06 01:54)

最近、Cのソースコードですが、コメントが // になっているのを見ました。いったいいつからHP-UXのCコンパイラはこんなソースを通すようになったのか? というか、そういう時代なんすかね?<br>をれもぢぢぃよのぉ。

takahata (2002-04-06 06:00)

ていうか、その上司もわかってない人だったとは…。だいたいコードを何千行書いたから、どうのこうのって言ってるんだろうなぁ。そんなんだから無駄な処理が増えかねない。んで、結局遅くなると言う…。<br>シンプルに書く方が速くて、あとからわかりやすいのにね。<br>って、話が横にそれすぎ…(汗)

きた (2002-04-06 07:24)

いや,もしかしたら上司は分かっててそういうフォローをしているのかもしれません.<br>そうやってダメプログラムがどんどん生成されていくのです.<br><br>ちなみに,上の文中いきなり「int z;」はHP-UXのCコンパイラに見事にはじかれました.

Oかもと (2002-04-06 10:08)

楽しそうでいいなぁ。<br>俺なんか、実務上見たコードで面白かったコードと言えば、<br><br>#define HOGE 256<br>.<br>.<br>#define hage(a,b) (a = b/HOGE)<br><br>くらいしかないなぁ。こんなのは、可愛いもんですな。<br>ちなみに、一時期の gcc は、int z; を通していたような...

まめどれ (2002-04-06 11:16)

外注の書いたソースには驚かされることが結構あります。<br>ただのカウンタを、グローバルで int i 何て宣言されたときは、気絶しそうでした。<br>ほかにも、unsigned char i;としてて、for(i=0;i<500;i++)などというものを見つけたら、こっそりメモっておいて、本人には知らせないという意地悪をしたりします。

Oかもと (2002-04-06 12:17)

小田舎からわざわざ新幹線に乗って何時間もかけて休日出勤したあげく、担当者がいないんじゃ、そりゃキレルわな。ご苦労様です。

kjana (2002-04-06 13:06)

HP-UX の cc だとオプションかも.10.20B だかの ansic パッケージだか<br>のやつだとデフォルトが cc -Ac 相当でそもそも ANSI-C のソースが通ら<br>なかったりしましたが.<br><br>それで cc -Aa ってやってやるとこれががちがちの ANSI-C でシステムコー<br>ルも呼べないという :-P -D_HPUX_SOURCE だかしてやっとふつうに使えると.<br><br>#define _FOO とかしようとすると先頭に `_' がつく名前は予約されているっ<br>てエラーになるし,なんかいろいろ.

argon (2002-04-06 13:54)

この春進学ですという人を見かけて驚くことはありませんか?<br>C++ って NULL Pointer 初期化が =0; って書けるのですね。<br>// でコメントした C ソースなど認めんぞぉと思っていたら、<br>これも C99 では OK なのですね。

argon (2002-04-06 17:04)

C99 の特徴はこの辺で。<br>http://seclan.dll.jp/c99d/

きた (2002-04-06 17:33)

ふむ.<br>今やってみたら確かにcc -Aeなら文中のdeclareもokですねぇ.<br>そうか.知らんかった.

yamk (2002-04-06 20:24)

こういう怪しげな書式は gcc のみだと思っていたけど、c99 なんつーのができてたんですね。// は嬉しいかも。<br>可変長配列も涙がでるほど便利そう。<br>for (int i = 0; i < 100; i++) hoge もできるのか。すばらしすぎ。しかもループが終わると i を捨ててくれるとわ。



このへんで勘弁しといたる.


旧「なんでやねん」はこちら.
| 2001/01 | 2001/02 | 2001/03 | 2001/04 | 2001/05 | 2001/06 | 2001/07 | 2001/08/25まで |

リンク上等!

Junichiro Kita