gpt4 book ai didi

c - 在 VS2012 Debug模式下找不到 fabs() (ANSI C)

转载 作者:行者123 更新时间:2023-11-30 17:48:45 26 4
gpt4 key购买 nike

我在 VS2012 中编译 ANSI-C(设置了 _CRT_SECURE_NO_WARNINGS)并且程序使用“math.h”。我遇到了以下问题:

sqrt()

VS2012的自动检查器会告诉我有一个错误

IntelliSense: more than one instance of overloaded function "sqrt"matches the argument list:

        function "sqrt(double _X)"
function "sqrt(float _X)"
function "sqrt(long double _X)"
argument types are: (int)

但该项目仍将构建。这让我很困惑,因为我认为 C 不支持函数重载?

使用 fabs() 进行调试

项目构建后我尝试调试。当它跑到终点线时

char eq(double a, double b, double epsilon) {
return (fabs(a - b) < epsilon); // problem
}

函数,它将构建,但在 Debug模式下它将生成一个错误页面“fabs.c not found”:

enter image description here

我不确定发生了什么事。看来问题只发生在 Debug模式下。当我在命令行中运行编译后的程序 .exe 时,它​​工作正常。

最佳答案

您的 sqrt() 问题是 Intellisense 的问题,Intellisense 是 IDE 的代码完成部分。它与编译代码无关。 Intellisense 可能始终默认为 C++,或者不知道您正在编译为 C 代码(它使用函数名称数据库进行查找)。你确定你是用C编译的吗?编译器有一个标志(您可以在解决方案、项目或文件属性中设置)来强制其编译为 C 或 C++,但如果您使用扩展名“.c”,它也将默认为 C。

fabs() 的问题正是当您尝试进入源代码不可用的代码时有时会发生的情况,这些代码通常是标准库中的函数,并且您使用的是 Visual Studio 的 Express 或 Standard 版本。专业版和更高版本的产品附带源代码,因此您应该能够使用这些产品进行调试。

当您单步执行该函数时,IDE 会尝试显示代码,但找不到它,然后会出现错误。但你可以继续调试,只需取消询问 fabs.c 路径的文件对话框并使用“Step out”,它就会回到函数调用后的代码行。

关于c - 在 VS2012 Debug模式下找不到 fabs() (ANSI C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18402466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com