Visual Studio 未找到包含的定义

Posted

技术标签:

【中文标题】Visual Studio 未找到包含的定义【英文标题】:Visual Studio not finding included definition 【发布时间】:2013-03-28 14:19:31 【问题描述】:

我对 C++ 很生疏,所以请原谅我有任何愚蠢的 cmets/问题。现在我正在使用 Microsoft Visual C++ 2010 Express。我有两个文件——一个源文件和一个头文件——当我包含头文件时,VS 正在识别头文件,但它在头文件中找不到任何定义。它显示'错误:标识符“RAW_PACKET_SIZE”未定义'。该代码作为示例提供以使用设备的 API,因此它应该可以工作。我假设问题出在VS设置上。下面是一些介绍代码形式:

recorder.cpp

#include <vector>
#include "APIW32.h"
#pragma comment(lib,"APIW32.lib")

int devID;
float* buf = new float[RAW_PACKET_SIZE];  // error is here, at 'RAW_PACKET_SIZE'

APIW32.h

#pragma once

#ifdef EXPORTS
#define API __declspec(dllexport)
#else
#define API __declspec(dllimport)
#endif

#define MIN_BW                0.301003456
#define MAX_BW                10100000
#define RAW_PACKET_SIZE       299008

更新:

该错误似乎仅出现在 Intellisense 中,而不是实际的构建错误。故事的寓意 - 智能感知并不总是正确的!

【问题讨论】:

看看预处理器,看看它告诉你什么:***.com/questions/8978997/… 是 RAW_PACKET_SIZE undefined 第一个错误吗?并尝试 NPEs 建议 你有语法错误:应该是float * buf = new float[RAW_PACKET_SIZE]。能找到“MAX_BW”和“MIN_BW”吗? 我在更改为 float* 后尝试构建它(我认为这是一个不相关的问题)。定义错误不在构建输出中,但红色下划线仍然存在。关闭VS并重新打开,现在一切都很好。我要删除这个问题。 你想说'Error: identifier "RAW_PACKET_SIZE" is undefined'不是构建错误,而是智能感知错误?请,请,请不要将 Intellisense 视为代码正确性的衡量标准。 【参考方案1】:

试试float* buf = new float[RAW_PACKET_SIZE];

【讨论】:

编译器应该报告类型不匹配的语法错误,如果这是原因,则不报告未定义的RAW_PACKET_SIZE 你说得对,这是一个错误,但这不是导致我所问问题的原因。

以上是关于Visual Studio 未找到包含的定义的主要内容,如果未能解决你的问题,请参考以下文章

Teamcity Visual Studio sln 未找到目标(项目文件夹内的项目)

未加载符号文件以在 Visual Studio 2012 中调试自定义项目

与代码块一起使用时,使用 Visual Studio 创建的静态库显示对 Myfunction 的未定义引用

未找到 qsort.cpp(在 Visual Studio 中调试)

未找到 Visual Studio 2022 Android 设备

未找到 Visual Studio 标头 (Qwt)