nDiki : エラーメッセージ

エラーメッセージ - error message

エラーメッセージの形式について - GNU Coding Standards の場合

GNU coding standards (February 20, 2004.) 4.3 Formatting Error Messages

 source-file-name:lineno: message

などの形式とする。

  • プログラム名やファイル名の後に message が続く場合は、message は大文字では始めない。そうではない場合(対話的なプログラムのエラーメッセージや使用法のメッセージなど)は大文字で始める。
  • どちらもピリオドでは終わらない。

関連情報

スポンサード リンク

1999年5月18日 (火)

プログラミング言語演習I第4回

今回は、scanf による入力と if 文の学習。

本日の課題

「年齢を入力させ、その値から車の免許が取れるかどうかと酒を飲めるかどうかのメッセージを出力するプログラムを作れ。」

学生から受けた質問等

  • muleが起動しない: mule-nw とスペースを開けていないのが原因。
  • scanfした後どうすればいいの: 課題の内容を再確認し、処理の流れを考えてもらう。(2件)
  • gcc でエラーがでた: gcc のエラーメッセージの見方を説明
  • getchar() を使ったが期待した値が入力できない: 似たプログラムがテキストにあって、ここでは getchar() を利用しているのでそれを真似た。ところが、getchar() では文字として入力しているので、入力した数値の最初の文字の文字コードが得られており期待通り動いていない。とりあえずここでは scanf を使うように説明。
  • コンパイラエラー: ';' 抜け。(3件)
  • どうみてもおかしくないのだが、コンパイラエラー: コメント開始と終了が /* ... */ ではなく \* ... *\ となっている。
  • よく意味のわからないコンパイルエラー: 変数宣言の前に printf で出力を行ってしまっている ... 変数宣言は関数(ブロック)の先頭でなければならないことを説明。(2件)
  • ソースファイルがない: gcc puro1.c -o puro1.c で上書きしまっている。ご愁傷さま。
  • gcc で No such file: kadadi4.c というファイル名で編集しているのに、kadai4.c だと思って gcc していただけ。
  • ファイルを保存しなかった: *scratch* バッファに入力。残念ながら mule 終了済み。カットアンドペーストもうまくいかず。ご愁傷さま。彼は本日同じことで2度ソースファイルを失い、これで3度目の入力だとか。
  • if (a == '18'): 数はシングルクォートする必要なし。複数文字をシングルクォートすると warning もでる。参照しているテキストが、getchar() で文字を入力し if で文字と比較している例なため、勘違い。
  • if ('a' == 18): 変数名をクォートしてしまっている。構文的にはエラーではないが、意図しない結果に。
  • gcc のやり方は: もう今日は第4回なのに。忘れちゃったかな。演習の進め方をまとめてある Web ページを説明し、参照してもらう。
  • warning: return type of 'main' is not 'int': main の返り値の型について。これも FAQ。すでに演習 Web ページに説明あり。上記メッセージを見て、main 関数の関数名を int にしたがうまくいかないという学生。ちょっとメッセージの読み違えですね。
  • parse error before character 033: なぜか目にみえない変なコードがソースファイルにまぎれてしまっている。mule であたりをつけて削除。
  • mail の見方: mail コマンドを説明

コメント

質問の内容が、操作からコンパイルエラーについてに変わってきた。 やっと、学生も操作になれてきたということか。 まだ、プログラム内容についてはついてきているようだ。 そのうち、どうプログラムを組んでいいかわからなくなってくる学生が増えてくるところか。

変数宣言が関数(ブロック)の先頭になければならない事は授業で説明されただろうか。指定のテキストでは明確にその点について記述されていないため、学生が間違えるのもしかたないか。

「MA1(えむえーわん)」と呼ばれている人がいたが彼は一体?

スポンサード リンク
[ 5月18日全て ]

2002年2月21日 (木)

14:20 なんで DNS DomainName が domainname なの?

昨日 Solaris 8 に入れようとしたアプリケーション、セットアップで

 To ensure the smoothest evaluation experience,
 we recommend that you have a valid DNS DomainName.

とでてアボートしていた。 なので、テスト用 DNS サーバたててドメイン名をひけるようにした。 が。アボート。

セットアップスクリプトをよくみてみたら、`domainname` の結果が空だとアボートさせている。 ??? domainname って NIS ドメイン名で DNS とは関係ないと思っていたんだけど。 今は違うの? とりあえずエラーメッセージに騙された感じ。

domainname コマンドでドメイン名を指定し、/etc/defaultdomain に同じ名前を書いておく。 で、再度セットアップしてみたらすんなり通ってしまった。 がっくし。 まぁ、djbdns の使い方覚えたからいっか。

[ 2月21日全て ]

2004年2月19日 (木)

[ Perl ] PDL::PP で C extension を書く

PDLを使ったPerl数値処理プログラムによりインタラクティブ性が求められるようになってきたので、一部をCで書いて高速化する事を検討。 問題は Linux でも Windows + ActivePerl でもすんなり動くかどうか。

.pd ファイルを書く

とりあず PDL::PP のサンプルから sumit 関数あたりを MathEx.pd に書いておく。

Makefile.PLを修正する

Foo::Bar パッケージの中の Foo::Bar::Math の一部を Foo::Bar::MathEx に移して、C extension 化したい。 ということで lib/Foo/Bar/MathEx.pd として、Makefile.PL の各種設定をしてみる。

がどうもうまくいかない。 PDL::PPMakefile.PLサポートは、Makefile.PL と同じ位置に .pd がある事を想定しているようなので、いろいろと小細工をしなければならない。 一方 PerlXS は Foo::Bar のベース名から Bar.so を作る前提になっているようで、これまたパッケージの中の一部のモジュールをどうもXS化しにくい。

Makefile.PLを作る

Perl の ext/SDBM_File を真似て、子 Makefile.PL を使ってみることにした。

 Foo-Bar-x.xx
   |
   +- Makefile.PL
   |
   +- lib
   |    |
   |    +- Foo
   |         |
   |         +- Bar.pm
   |         |
   |         +- Bar
   |              |
   |              +- Math.pm
   |              |
   |              +- MathNoEx.pm
   |              |
   |              ...
   |
   |
   +- blib/...
   |
   +- MathEx
   |    |
   |    +- Makefile.PL
   |    |
   |    +- MathEx.pd
   ...

パッケージディレクトリの下に MathEx ディレクトリを作り、そこに Makefile.PL と MathEx.pd を置く。 Makefile.PL は MathEx.pd 専用になるので、PDL::PP の標準的なものでOKになる。

全体のパッケージング・PPM化・インストール等が面倒にならないかと心配したが、Foo-Bar パッケージ化で perl Makefile.PL、make xxx を実行すれば子Makefile.PLまできちんと面倒をみてくれる。 MathEx 以下でビルドしたものもパッケージの blib に一緒に入れてくれるし(=一緒にインストールできる・PPM化できる)。 逆に make dist の際には子Makefileの方は余計なとりまとめはしないで、親Makefileが一括して tar.gz に入れてくれる。 これはよい。 MathEx.pd もきちんと Foo/Bar/MathEx.so になった。

XSが使えない環境との両対応

XSが使えない環境のために、PerlとPPの両方で関数を書いておく。 XSが使えれば MathEx を、使えなければ MathNoEx.pm を使うように。 表向きのAPIは Foo::Bar::Math とし、ここで AUTOLOAD を使ってどちらか一方を呼び出すようにする。 間接呼び出しにして遅くなるのはいやなので、シンボルテーブルを直接設定する。

 use vars qw($IMPLEMENT_CLASS $AUTOLOAD);
 BEGIN {
   $IMPLEMENT_CLASS = 'Foo::Bar::MathEx';

   eval "use $IMPLEMENT_CLASS";
   if ($@) {
     warn "Can't load $IMPLEMENT_CLASS: $@";
     $IMPLEMENT_CLASS = 'Foo::Bar::MathNoEx';
     eval "use $IMPLEMENT_CLASS";
     die $@ if $@;
   }
 }

 sub AUTOLOAD {
   my $name = $AUTOLOAD;
   $name =~ s/.*://;
   my $implement = $IMPLEMENT_CLASS . '::' .$name;
   no strict "refs";
   *{$name} = \&{$implement}; # ここでシンボルテーブル設定
   return &{$implement}(@_);
 }

最初は、AUTOLOAD の最後の行で die したら、trap してエラーメッセージ中のパッケージ名(Foo::Bar::MathEx や Foo::Bar::MathNoEx)を呼び出された Foo::Bar::Math に置換して die し直すようにしようかと思ったが面倒なのでやめ。

ActivePerl 5.6 + Visual C++ 6

使っているWindows BOX には Visual C++ 6 が入っているので、XSも問題なくビルドでき PDL extension もうまく動いた。

 PPM化までここで済ませば、他のPCにも持っていけるはず。

さて

これでバシバシPPで書けるわけだが、PPがこれまた難解で最初は苦労しそう。

[ 2月19日全て ]

2005年1月8日 (土)

NSIS が再び Linux でコンパイルできるように

2.01 で POSIX プラットフォームで動くようになった NSIS であるが、2.02、2.03 は Linux上ではソースパッケージからのビルドエラーになってしまっていた。

1月5日に 2.04 がリリースされたので、こちらも試してみる。お、ビルドできた。

 tar jxvf nsis204.tar.bz2
 cd NSIS/Source
 make USE_PRECOMPILED_EXEHEADS=1
 cd ..
 su
 ./install.sh /usr/local/NSIS-2.04

インストール時に Menu ディレクトリが無くてエラーメッセージが出るのは前回と一緒。CVS リポジトリをみるとHTMLで書かれたドキュメントがあるだけのようなので、無くても問題なさそうである。 付属の install.sh も改行コードが CRLF から LF に修正されているためそのまま実行できるようになった。


[ Linux 上で NSIS ]

[ 1月8日全て ]

2005年3月7日 (月)

日本語ファイル名どんとこい

私も大人であるから WordExcelPowerPoint のファイルのやりとりがあれば Windows BOX で読み書きしている(参考: Richard Stallman 氏に習う Word 添付ファイルの断り方)。

そしてメールに添付されてくるそれらのファイルは多くの場合、日本語ファイル名だったりする。 Linux 上の Mew 上で適当にASCII文字を使ったファイル名をつけて保存、Samba 経由で Windows BOX で閲覧するというのがいつもの流れだ。 しかし適当に名前をつけているので、すぐどれがどのファイルだがわからなくなる。

Samba で共有しているディレクトリ以下ぐらいは、日本語ファイル名のファイルを作ってもいいことにするかなぁ。

ということで環境設定。

LANG

これを機会に一気に UTF-8 化を促進するか。

LANG を ja_JP.eucJP からja_JP.UTF-8 に。 もともと locales では ja_JP.UTF-8 も生成済みだったので特に作業無し。

ターミナルソフトも去年 mlterm に乗り換えているので問題無し。

Emacs

 (set-default-coding-systems 'utf-8-unix)

default-file-name-coding-system も utf-8-unix になる。

Samba

3.0 系。

 dos charset = CP932
 unix charset = UTF-8 (default)

既に設定済み。

ファイラ

さすがに Bash 上で日本語ファイル名を打つのも面倒なので、何かファイルマネージャがあった方がいいな。 できれば Emacs っぽいキーバインディングで。 …… dired でいっか。

とりあえず

移行した。 pLaTeXエラーメッセージとか、UTF-8端末だと読めないものもあるので多少の不便はあるものの大きな問題は今のところなさそうだ。

しばらくやってみる。

[ 3月7日全て ]

2008年1月8日 (火)

sarge からetch へのアップグレードで危うくサービス壊すところだった

APT ラインが stable だったため中途半端に etch が混ざっているのが気になっているサーバがある。 セットアップした管理者がしばらく不在にしているので、アップグレードすることにしたが、やはりすんなりとはいかなかった。

Python 2.3 から 2.4

Python を使っているパッケージより先にインタープリタが削除されたため、そのパッケージが削除できなくなった。

依存関係無視して一旦削除して、更新。

Dovecot は設定がそのまま使えず、ダウングレード

Dovecotアップデートしたら、設定ファイルの項目が変わったのか、エラーメッセージを吐いてデーモンがあがらなくなった。 MySQL 使ってたり、いろいろ苦労して設定してたものなので、いじるのは危険。 sarge からパッケージ持ってきてダウングレード。

Linux kernelアップデートできず

kernel も 2.4 から 2.6 へアップデートしたが、再起動したら md まわりでエラーRAID のところがそのままでは駄目っぽい。 慌てて元に戻す。

一旦 udev にしたのも hotplug に戻した。

Apache は a2ensite・a2enmod しなおし

こちらは、バーチャルホストといくつかのモジュールの有効化がリセットされてサイトが見られなくなっていたので、それぞれ有効化しなおして復帰。

[ 1月8日全て ]

2009年2月14日 (土)

Windows 上の Unison では日本語ファイル名処理に問題

今まで Windows ではそれほど Unison を使わなかったのと、自分では日本語ファイル名をつけないということで気がつかなかったんだけれど、UnisonWindows 上では日本語ファイル名処理に問題があるらしい。

Unison 2.27.57 で日本語ファイル名のファイルを同期しようとすると `The name of this Unix file is not allowed in Windows' というエラーメッセージが表示されることがある。 チェックは正規表現 "\\.*|aux|con|lpt1|prn|(.*[\000-\031\\/<>:\"|].*)" でしているらしい。 マルチバイト文字だとこれで誤認識されることがあるようだ。

パッチあててもいいけれど、Windows 上で Ocaml ビルド環境入れてとかちょっと面倒。 他のファイル同期ツール探すか、Linux 上で同期するかどちらかだな。

[ 2月14日全て ]

2009年9月27日 (日)

今日のさえずり - 今日も勢いのあるいい小便でした

2009年09月25日

  • 09:45 意識してなかったけどたしかに。 RT @himanainu_kawai: フォロワーを増やすとどうなるか分かりますか?タイムラインがすべて現在になるんです。 [mb]
  • 10:47 実害はないが起動時にエラーメッセージが出るので touch /etc/fetchmailrc しておく。 #Debian
  • 11:17 がんすけ2アップデート
  • 11:21 今日からチキンタツタか。
  • 12:51 2009年9月22日の歩行: 6408歩、4.84km、64分、4.53km/h、消費 233.7kcal、脂肪燃焼 33.4g、3.1エクササイズ。
  • 12:52 2009年9月23日の歩行: 830歩、0.63km、7分、4.98km/h、消費 30.9kcal、脂肪燃焼 4.4g、0.4エクササイズ。
  • 12:53 2009年9月24日の歩行: 5240歩、4.07km、44分、5.47km/h、消費 196.5kcal、脂肪燃焼 28.0g、2.8エクササイズ。
  • 19:58 RT @yamakiyo: 昨日,帰りの電車でラジカセ型のバッグを持っていた人がいた.よく見たらAMラジオ放送の周波数帯がMHzになってたよ.ダサい. これ → http://bit.ly/JnvoN [mb]

2009年09月26日

2009年09月27日

  • 12:26 しながわ中央公園の芝生でランチ。ひなた暑っ。 [mb]
  • 14:12 スターバックス入店。クレーム ブリュレ マキアート アイス。 [mb]
  • 15:42 公園で折り畳みテーブル使っているグループが2組いた。あれ欲しいな。
  • 15:55 RT @sugamasao: ついったーに張り付いていても人生は前進しない事に気がついた。
  • 21:58 Google Sidewiki のエントリは非公開選択できないのか。できるともっと便利なのになあ。
  • 23:06 2009年9月25日の歩行: 5543歩、4.30km、46分、5.51km/h、消費 210.4kcal、脂肪燃焼 30.1g、3.1エクササイズ。
  • 23:07 2009年9月26日の歩行: 5695歩、4.37km、49分、5.26km/h、消費 218.3kcal、脂肪燃焼 31.2g、3.2エクササイズ。
  • 23:08 2009年9月27日の歩行: 5093歩、3.98km、43分、5.49km/h、消費 180.0kcal、脂肪燃焼 25.7g、2.5エクササイズ。
  • 23:46 はてなブックマークFirefox拡張をインストールしてみて、再起動かけたところ。
[ 9月27日全て ]

2011年2月24日 (木)

今日のさえずり: 何で今日はオフィスのみんなが Facebook やってるの? 何かを超えたの?

2011年02月24日

  • 06:50 ATOK for Android製品発表は今日のNTTドコモ製品発表にタイミングを合わせるため止めていると予想。
  • 10:35 Google Chrome 拡張も別プロセスなのか。
  • 11:26 「クラス宣言だけしか読んでないソースファイル内で delete してたのでデストラクタが呼ばれなくてメモリリーク」を C++ のコードで発見して潰した。あれぇなんで C4150 出てなかったんだ?
  • 12:10 弁当 350円。 (@ 向日葵 和泉町店・カレー食堂) http://4sq.com/hEDCFU
  • 12:13 prove の範囲でのメモリリークを全部潰した。おいしくお昼ごはんが食べられる。
  • 12:16 Android 用の ATOK は結局6月30日までトライアル版延長か。
  • 12:26 RT @atok_js: 予告させていただいた通り、大きく3つのポイントがあります。1. 利用期間を6月まで延長 2. 3キャリアそれぞれのTrial版を公開 3. マッシュルーム対応です。 http://ow.ly/42jZY #atok4android
  • 12:26 RT @atok_js: それと、基本的な機能も大きく強化しています。濁点/半濁点や半角スペースのフリック入力、本体メモリ使用量を削減、キーサイズの設定追加など、書ききれないぐらいの機能強化を施しています。#atok4android
  • 12:30 ATOK for Android のキーサイズ「小さく」に設定した。縦方向の誤打は今までほとんどないので。横幅が広くなるといいのだけれど、そうすると POBox Touch の真似するしかないのかな。 #atok4android
  • 13:37 「さくらのVPS 1G」月額1,480円。512MB は心もとなさそうで手を出さなかったけれど、1GB だといいんじゃない? http://bit.ly/i22R4o
  • 13:41 RT @yapcasia: 【仮】YAPC::Asia Tokyo 2011 は 10/13, 10/14, 10/15の予定。会場が決定していないのでまだ変更の可能性はあります。
  • 14:50 液晶プロジェクタの交換用ランプ定価44,625円か。結構するな。
  • 15:23 交換用ランプ買うなら新しいの買ったらという話になってる。
  • 17:21 RT @atok_js: 【初めてATOK for Androidをご利用される方へ】キーボード右側の矢印はフリックで上下左右に向きを変えることができます。カーソルの移動が楽になると思いますので試してくださいね。#atok4android
  • 17:48 何で今日はオフィスのみんなが Facebook やってるの? 何かを超えたの?
  • 18:19 ティオ 100円。
  • 18:35 Locale::Maketext で po ファイルを使うやり方。言語別にパッケージ作って %Lexicon 作るより管理が楽そう。 / Perl でつくった web サイトを L10N する方法 - TokuLog 改メ tokuh… http://htn.to/en3XyA
  • 19:02 「高速化に着手する。」
  • 19:41 みんなそろそろエイプリルフールの準備始めてるのかな。
  • 20:11 予想よりは高速化の結果はちょっぴりだった(そんなもん)。
  • 20:51 RT @tekiomo: PHPエラーメッセージでググるとそのエラーが実際に出ているページがひっかかる仕様をどうにかしてもらいたい
  • 20:59 あ、同時プリント受け取り忘れてる。
  • 21:59 せっかくいい記事だなと思ってmixiチェックボタンを押したのに、mixi Plugin のサービス設定で「~をチェックしました。オススメです!」ってなるように定型文設定されてて萎えた。オススメ押し売りすぎ。
  • 22:39 RT @zakwa: 飲みの誘いを断る事に「申し訳ない感」よりも「勿体ない感」が明らかに強いのはなぜだろう。
  • 24:36 自分が昔買ったのより付属品が増えてて楽しそう。 / ASCII.jp:昔懐かしいD&Dの「赤箱」が最新版になって復活! http://htn.to/AHPa1X
[ 2月24日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・PO をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.059437s / load averages: 0.63, 0.56, 0.46
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker