Visual Studio 2015社区 - 找不到函数定义但可以编译

时间:2017-02-04 11:00:37

标签: c++ visual-studio-2015

我在visual studio 2015社区有一个项目。它编译没有任何错误,但我得到了compute_edge_map_via_lab和compute_local_minima下的绿色波浪线,其中函数定义为" compute_edge_map_via_lab"找不到。我可以右键单击调用compute_edge_map_via_lab的行,然后单击"转到定义"它甚至将我带到cpp文件中的定义,暗示visual studio知道函数的定义位置。所以我不明白这个绿色错误。任何人都可以帮我吗?

我已经粘贴了compute_edge_map_via_lab的函数和显示错误的图片。

enter image description here

<div class="parent">
  <div><img src="https://dummyimage.com/600x400/000/fff" alt="Image"></div>
  <ul>
    <li>List 1</li>
    <li>List 2</li>
    <li>List 5</li>
     <li>List 1</li>
    <li>List 2</li>
    <li>List 5</li>
    <li>List 6</li>
    <li>List 7</li>
    <li>List 8</li>
    <li>List 9</li>
    <li>List 10</li>
    <li>List 11</li>
  </ul>
</div>

图像processing.h

#include <boost/heap/fibonacci_heap.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/iteration_macros.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <unordered_set>

#include "image-processing.h"

int main {

cv::Mat image = imread("0001.jpg", CV_LOAD_IMAGE_COLOR);

//compute edge map
cv::Mat magnitude;
compute_edge_map_via_lab(image, magnitude);

//compute local minimas
cv::Mat markers;
compute_local_minima(magnitude, markers);
}

图像processing.cpp

#pragma once

#include <opencv2/opencv.hpp>

void compute_edge_map_via_lab(cv::Mat image, cv::Mat edge_map);
void compute_local_minima(cv::Mat magnitude, cv::Mat markers);

1 个答案:

答案 0 :(得分:1)

就C ++标准而言,它并不重要:只要不调用函数,就可以声明没有定义的函数原型。

在C ++ 11之前的日子里,这甚至被利用了:例如引入默认构造函数原型来抑制不必要的构造。

这样的情况很难被智能感知发现 - 也许这是一件好事,它确实突出了它们。 (顺便说一句,intellisense使用不同的词法分析器来实际编译!)