【发布时间】: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