【问题标题】:Visual Studio not finding included definitionVisual Studio 未找到包含的定义
【发布时间】: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 中,而不是实际的构建错误。故事的寓意 - 智能感知并不总是正确的!

【问题讨论】:

  • 看看预处理器,看看它告诉你什么:stackoverflow.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 视为代码正确性的衡量标准。

标签: c++ visual-studio-2010 visual-studio-express include-path


【解决方案1】:

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

【讨论】:

  • 编译器应该报告类型不匹配的语法错误,如果这是原因,则不报告未定义的RAW_PACKET_SIZE
  • 你说得对,这是一个错误,但这不是导致我所问问题的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多