內的頭部聲明函數指針我有一個包含以下一個簡單包頭:一個命名空間
// system.h
#pragma once
namespace System
{
void Initialize(void);
int (*Main)(int& argc, char** argv);
void Shutdown(void);
}
在「system.cpp」,初始化()被限定爲使得所述函數指針主(INT, char **)被設置爲另一個主函數,由預處理器確定將定義的任何系統將被編譯(Windows,現在)。
在程序的main.cpp中,它調用上述三種功能...
所以,當這編譯,我得到一個鏈接錯誤(system.cpp)抱怨系統:主(INT, char **)已經在main.cpp中定義。這是怎麼回事?
〜
// system.cpp
#include "..\system.h"
#ifdef _WINDOWS
#include "windows.h"
#else
#define SYSTEM_UNKNOWN 1
#endif
void System::Initialize(void)
{
#ifdef WINDOWS
System::Main = &Windows::Main;
#else if SYSTEM_UNKNOWN
System::Main = NULL;
#endif
}
void System::Shutdown(void)
{
System::Main = NULL;
}
我加入了 '的extern' 關鍵字的頭......而仍然沒有去。
試過'extern'...不行:/我得到未解決的外部符號錯誤......這很奇怪。由於它是在system.cpp中定義的! – user3120381
好的!顯然我沒有初始化函數中的定義......這是不愉快的。 – user3120381