とあるC++言語のソースコード,hoge.cppをC言語用にするために,hoge.cにリネームした時のこと.
何もC++言語としての機能は使用していなかったので,リネームするだけで問題ないと思っていました.
しかし,何度やっても
error C2143: 構文エラー : ';' が '型' の前にありません。
というエラーが出て,コンパイルできない.
元のコードはこんな感じでした.
void hoge(int i) {
printf("%d",i);
int j = i+1;
printf("%d, j);
}
このところ,C++言語ばかりしていたのですっかり忘れていましたが,変数宣言が途中にあるとC言語ではエラーになるのでしたね.うっかりしていました.次のように順番を入れ替えたら,エラーはなくなりました.
void hoge(int i) {
int j = i+1;
printf("%d",i);
printf("%d, j);
}
ちなみに,上のエラーはVS2005で起こりました.
IVF備忘録-古いFORTRAN77プログラムをコンパイルする
今でも技術屋の世界では,20年以上前のFORTRAN77で書かれたコードが現役だったりします.
ところが,コードが作られた時比べて,OSやコンパイラ,果てはコード作成時のポリシーも変化しています.古いコードを最近のコンパイラでコンパイルすると,しばしばエラーが発生します.
これまで,Intel Visual Fortran(IVF)を使って古~いコードをコンパイルしたとき,次のオプションをデフォルトから変更するとうまくいったことが多かったです.
プロジェクトのプロパティから,Fortran->Diagnostics
1. "General Interface Blocks"を"No"にする
2. "Check Routine Interface"を"No"にする
それぞれが意味する内容は面倒なので省略します.
ただし,いずれもデバッグをする上では欠かせない機能を無効にします.したがって,適切に動作することが保障されているコードに限定して適用することを強くお勧めします.間違っても,自分で書いた新しいコードが,これらを無効にしないと動かない,なんてことがないように!
VS2005(Visual Studio 2005)を新PCにインストールしたら,毎回起動時にスタート ページが表れて,ただでさえ起動の遅いVS2005がより遅くなる.
ツール->オプション
から
環境->スタートアップ->スタートアップ時
を
「スタート ページの表示」
から
「空の環境の表示」
に変更して使ってます.これで,少しは起動が速くなった.
それにしても,なんで「スタート」と「ページ」の間に半角スペースがあるのだろう?
というのが気になったら,プログラムをする仕事の職業病ではなかろうか...
doxygen備忘録.
doxygenとは,ソースコードに一定の書式でコメントを書いておくと,それをもとにドキュメントを自動生成してくれます.なかなかに便利で,良く使っています.
だいぶ前ですが,doxygen1.5.1がバージョンアップして,doxygen1.5.2になりました.すると,設定ファイルの書式に変化があり,日本語が文字化けしてしまうようになってしまいました.
とりあえず,
doxygen -u 設定ファイル名
とすることで,新しいバージョン用に設定ファイルを自動更新してくれます.
しかし,依然文字化けは治らない.どうも,doxygenの内部コードがUTF-8に統一されたようで,以前とは文字コードの設定方法が異なったようです.
新しい設定項目に,"DOXYFILE_ENCODING"と"INPUT_ENCODING"というのがあり,これに"SHIFT_JIS"を設定すればよさそう.
ところが,何度やっても,文字化けは治らず.いろいろ調べてみると,おなじ"SHIFT_JIS"でも"CP932"と直接コードページを指定しなければならないよう.
指定すると,ちゃんと動きました.
これ調べるだけで,数時間かかってしまった...