1

编译以下源时:

int main()
{
  exp(1.0);

  return 0;
}

编译器给出以下错误:error C3861: 'exp': identifier not found因为我没有行:#include <iostream>上面main()

但是,如果间接包含库,Visual Studio 将不会显示错误。例如,以下代码编译没有问题,即使 的依赖关系exp<cmath>.

#include <istream>
int main()
{
  exp(1.0);

  return 0;
}

这是因为<iostream>包括<istream>哪些包括<ostream>哪些包括<ios>哪些包括<xlocnum>哪些包括<cmath>

如果我没有明确包含一个库但尝试使用它的标识符之一,有没有办法让视觉工作室抛出错误?

4

1 回答 1

0

您可能想看看include-what-you-use。它是一个基于clang的工具,试图检测缺失和多余的包含指令。

于 2012-12-11T21:19:13.697 回答