【发布时间】:2019-07-22 02:24:48
【问题描述】:
我在 ifndef 中有一个结构,它在 Visual Studio 中显示为灰色。它位于一个头文件中,然后包含在另一个 cpp 文件中。 cpp文件无法访问struct,会导致编译错误。
我已将 GAME_SHADER_DLL 定义添加到 Visual Studio 中项目的预处理器定义中,但运气不好。
这不是我的代码,它来自源 sdk 2013。我已经通过删除定义使代码工作,但是我不知道这会产生什么影响,因为我不知道项目中的定义做什么这么大。
// BaseVSShader.h
#ifndef GAME_SHADER_DLL
struct DrawFlashlight_dx90_Vars_t
{
DrawFlashlight_dx90_Vars_t()
{
// set all ints to -1
memset( this, 0xFF, sizeof(DrawFlashlight_dx90_Vars_t) );
// set all bools to a default value.
m_bBump = false;
m_bLightmappedGeneric = false;
m_bWorldVertexTransition = false;
m_bTeeth = false;
m_bSSBump = false;
m_fSeamlessScale = 0.0;
}
bool m_bBump;
bool m_bLightmappedGeneric;
bool m_bWorldVertexTransition;
bool m_bTeeth;
int m_nBumpmapVar;
int m_nBumpmapFrame;
int m_nBumpTransform;
int m_nFlashlightTextureVar;
int m_nFlashlightTextureFrameVar;
int m_nBaseTexture2Var;
int m_nBaseTexture2FrameVar;
int m_nBumpmap2Var;
int m_nBumpmap2Frame;
int m_nBump2Transform;
int m_nDetailVar;
int m_nDetailScale;
int m_nDetailTextureCombineMode;
int m_nDetailTextureBlendFactor;
int m_nDetailTint;
int m_nTeethForwardVar;
int m_nTeethIllumFactorVar;
int m_nAlphaTestReference;
bool m_bSSBump;
float m_fSeamlessScale; // 0.0 = not seamless
};
void DrawFlashlight_dx90( IMaterialVar** params,
IShaderDynamicAPI *pShaderAPI, IShaderShadow* pShaderShadow, DrawFlashlight_dx90_Vars_t &vars );
#endif // GAME_SHADER_DLL
// lightmappedgeneric_dx9_helper.cpp
#include "BaseVSShader.h"
// ... Further down in the file
CBaseVSShader::DrawFlashlight_dx90_Vars_t vars; // Has no member DrawFlashlight_dx90_Vars_t
【问题讨论】:
标签: c++ visual-studio