在VS2010中,M_PI在Debug配置下可以工作,但在Release配置下无法工作。

5

在我未经管理的 C++ 源代码中,我有以下内容:

#define _USE_MATH_DEFINES
#include <cmath>

然后我使用M_PI几次。在Debug配置下编译完美无缺,但在Release下会出现以下错误:

error C2065: 'M_PI' : 未声明的标识符

可能是哪个配置属性导致的呢?

4个回答

7
解决了。
我之前写错了。
#define _USE_MATH_DEFINES

之前

#include "stdafx.h"

启用预编译头文件 (/Yu) 并处于发布模式时,其上方的所有内容都将被忽略。

3
以下代码在我的电脑上可以顺利编译,无论是debug还是release模式:
#define _USE_MATH_DEFINES
#include <cmath>

int main(void)
{
    double x = M_PI;
    return 0;
}

您的问题可能出现在您的代码其他部分。您是否在调试或发布模式下进行条件编译?请检查一下。

1

要注意调试和发布配置之间的差异:

最重要的是:

  • 包含文件
  • 宏定义

0

我遇到了预编译头文件的相同问题。 在Release模式下,请确保创建pch.cpp预编译头(/Yc)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接