为什么用define定义了常量还是出现未声明标识的错误呢,好奇怪

LoveBoydan 2010-05-06 09:00:23
真是搞不懂,请看
//ChunkID.h
#define MAT_NAME 0xA000
#define MAT_AMBIENT 0xA010
#define MAT_DIFFUSE 0xA020
#define MAT_SPECULAR 0xA030
#define MAT_SHININESS 0xA040

#define COLOR_RBG 0x0010
#define COLOR_F 0x0011




//Model3ds.cpp
#include"ChunkID.h"

void Model3ds::ReadMaterial(Chunk chunk)
{
int datasize=(int)(chunk.Len-ChunkheadSize());
Chunk mychunk;
float r,g,b;
Material mat;
while(datasize>0)
{
ReadChunk(mychunk);
datasize=datasize-mychunk.Len;
switch(mychunk.ID)
{
case MAT_NAME:
mat.name=Readstring();
break;
case MAT_AMBIENT:
ReadColor(r,g,b);
mat.AmbientColor[0]=r;
mat.AmbientColor[1]=g;
mat.AmbientColor[2]=b;
break;
case MAT_DIFFASE:
ReadColor(r,g,b);
mat.DiffuseColor[0]=r;
mat.DiffuseColor[1]=g;
mat.DiffuseColor[2]=b;
break;
case MAT_SPECULAR:
ReadColor(r,g,b);
mat.SpecularColor[0]=r;
mat.SpecularColor[1]=g;
mat.SpecularColor[2]=b;
break;
case MAT_SHININESS:

break;
default:
IgnoreChunk(mychunk);
}
}
}


调试出现以下:
1>e:\c++练习\load3ds\load3ds\model3ds.cpp(160) : error C2065: “MAT_NAME”: 未声明的标识符



请问一下为什么会出现这种报错呢?我明明声明了标识符,为什么又说未声明呢?而其它几个标识符又为什么没报错呢?编译环境是vs2008。请高手给个解释

...全文
2084 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveBoydan 2010-05-06
  • 打赏
  • 举报
回复
找到原因了,是路径问题。我的文件指向其他目录,可是在当前工程目录也有这个文件,但当前工程目录的这个文件没有定义MAT_NAME,程序优先搜索当前工程目录,如果找到该文件,其他目录就不找了。我指向其他目录的那个文件定义了MAT_NAME。

谢谢各位好心人!!!
洗洗睡去 2010-05-06
  • 打赏
  • 举报
回复
估计是工程里没添加.h文件吧
red-fly 2010-05-06
  • 打赏
  • 举报
回复

#define MAT_NAME 0xA000
一行重新手动输入一遍试
或者是把 MAT_NAME 换成另一个标示符试试
是不是在 Model3ds.cpp 中还包含了另外的文件?如果是,你是如何包含的?

ChunkID.h文件中的内容是啥样子的?有没有只编译一次的那个define?
你的.h文件和.cpp文件的目录关系是啥样子的?是不是不在同一个目录中?还是你存在多个ChunkID.h文件?
oldn123 2010-05-06
  • 打赏
  • 举报
回复
好奇怪..
ctrl_C ctrl_V 再统一一下该宏名看看 或者改个名子试试

16,547

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧