2014年08月15日

エディットコンテニュが効かない時

VC++ 2012 (Express) で、特定のプロジェクトだけエディットコンテニュが効かない現象に悩まされました。
一時停止中に適当に編集してから続行しても、再コンパイルする気配を全く見せず、なにかメッセージが出るわけでもなく、何事もなかったかのように再開します。
当然編集内容は反映されていません。

以前から使っているプロジェクトや、新規作成した状態プロジェクトではちゃんとできるので、なにか設定が悪いはず。
いろいろ考え、もしかしたら、と思って静的リンクしているライブラリを外してみたところ、見事にエディットコンテニュできるようになりました。

どうやらリンクしているライブラリに、リリースモードでビルドされていたものが混ざっていたようです。
というわけでライブラリのソースを持ってきてデバッグモードで自前ビルドし、そのライブラリにリンクするようにしたところ、うまくいきました。
無駄な時間を過ごしてしまった…
posted by JUNOSOFT at 23:49| Comment(0) | プログラミング

2014年08月12日

minmax

WinDef.h に min マクロと max マクロがあって、ちょくちょく使っていたのですがこれって std::min std::max と思い切り衝突するんですよね...
どうせなテンプレート版の min/max を使いたいのですが、そうすると Visual C++ のコンパイラに怒られるのであきらめていました。
ところが、よくよく見たら

#ifndef NOMINMAX

なんてスイッチがあるではないですか。WinDef.h をインクルードする (Windows.h から間接インクルードしている場合がほとんどだと思う)
前にこれを define しておけば無効化されるようです。


しかし min max が定義済みってのは少しやりにくいですね。あと、rad1 が定義済みなのも地味に痛いんですよ。
ラジアン値を入れるのに一時変数名で rad = GetAngle(A) みたいに使ったりするので。角度値を複数入れようとし rad0 = GetAngle(A); rad1 = GetAngle(B) とかやろうとするとアウトです。


posted by JUNOSOFT at 05:42| Comment(0) | プログラミング