我是,頭部防護解決重新定義的問題的印象。我收到的鏈接器錯誤表明在.obj文件中有重新定義。這是我包含的標題,問題在於重新定義所有全局聲明。部首後衛/翻譯單元問題
#ifndef DIRECT3D_H
#define DIRECT3D_H
// global declarations
ID3D10Device* device;
ID3D10Buffer* pBuffer;
ID3D10Buffer* iBuffer; // the pointer to the index buffer
ID3D10RenderTargetView* rtv; // the pointer to the render target view
ID3D10DepthStencilView* dsv; // the pointer to the depth stencil view
IDXGISwapChain* swapchain; // the pointer to the swap chain class
ID3D10Effect* pEffect;
ID3D10EffectTechnique* pTechnique;
ID3D10EffectPass* pPass;
ID3D10InputLayout* pVertexLayout;
ID3D10EffectMatrixVariable* pTransform; // the pointer to the effect variable interface
D3D10_PASS_DESC PassDesc;
// function prototypes
void initD3D(HWND hWnd);
void render_frame();
void init_pipeline();
void cleanD3D();
void Init();
#endif
說這個頭被稱爲3DClass.h。它包含在3DClass.cpp中。它也被包含在另一個文件中 - 一個主要的遊戲循環。現在,我意識到可能存在與頭文件時,有多個翻譯單位的問題,但我不明白爲什麼這會無法正常工作,我只是其中一個文件頭,並在相應的源文件。這不應該罰款嗎?
你可能想閱讀[這個答案](http://stackoverflow.com/questions/6923961/source-file-and-header-in-c/6924146#6924146)。 – sbi
哇,所有的全局變量是什麼? –