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 中调试)