我在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的函数和显示错误的图片。
<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);
答案 0 :(得分:1)
就C ++标准而言,它并不重要:只要不调用函数,就可以声明没有定义的函数原型。
在C ++ 11之前的日子里,这甚至被利用了:例如引入默认构造函数原型来抑制不必要的构造。
这样的情况很难被智能感知发现 - 也许这是一件好事,它确实突出了它们。 (顺便说一句,intellisense使用不同的词法分析器来实际编译!)