ReleaseビルドとDebugビルドの違い – プログラミング – Home

ReleaseビルドとDebugビルド...
 
通知
すべてクリア

ReleaseビルドとDebugビルドの違い


reshia
 reshia
(@reshia)
ゲスト
結合: 20年前
投稿: 117
Topic starter  

VisualStudio.NET2003、MFC有りで、
M_PIを使っていて、
#define _USE_MATH_DEFINES
#include <cmath> // math.hでも同じこと
もしているのですが、Debugビルドでは問題なく、Releaseビルドでは、
「error C2065: 'M_PI' : 定義されていない識別子です。」
とコンパイルエラーになります。

逆に、Releaseでは問題ないのに、Debugの時には、
「c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\fstream(465):
error C2061: 構文エラー : 識別子 '_DebugHeapTag'」
というエラーが出たことがあります。
このエラーは
#include <fstream>

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
の前に持ってくる事で直ったのですが(謎)、
何故でしょうか??

まず、M_PIの方の件をお願いします。


引用解決済
トピックタグ
reshia
 reshia
(@reshia)
ゲスト
結合: 20年前
投稿: 117
Topic starter  

一応、このエラーが出るソースをホームページの方にアップしましたので、
よければ見てください。

こちらです。
http://reshia.ifdef.jp/ware/anonview_src.lzh


返信引用
BB
 BB
(@BB)
ゲスト
結合: 20年前
投稿: 18
 

#define USE_MATH_DEFINES
#include <cmath>
#ifndef M_PI
#define M_PI 3.14159265358979323846 // なぜM_PIが定義されていないと言わ
れるのか?
#endif
スケルトンプロジェクトにこの部分だけコピペしたら、Debug/Release共に問題なく
ビルドできました。(VC++ 6 )
どこかの#ifdef-#endifの間に入ってしまっているとか、ここ以外の部分に問題がある
のではないでしょうか?

>#include <fstream>
>を
>#ifdef _DEBUG
>#define new DEBUG_NEW
>#endif
>の前に持ってくる事で直ったのですが(謎)、
>何故でしょうか??
STLのヘッダーはそうするのが定石のようです。
STL内のnew がDEBUG_NEWに置き換わると山のようにエラーを吐きます。


返信引用
reshia
 reshia
(@reshia)
ゲスト
結合: 20年前
投稿: 117
Topic starter  

>STLのヘッダーはそうするのが定石のようです。
>STL内のnew がDEBUG_NEWに置き換わると山のようにエラーを吐きます。
なるほど。そういわれると納得します。

M_PIは、スケルトンに
#define _USE_MATH_DEFINES
#include <cmath>
だけ、貼り付けて、Serialize内で、
double pi = M_PI;
としてみましたが、
やはりエラーが出ます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました