I have a file p2.cpp and 2d.cpp which I'm trying to link with 2d.h. I have included 2d.h in both .cpp files and I'm getting an error:
每個符號只能在程序中定義一次(refer One definition rule)。我不確定你的頭文件是什麼樣的,但通常這意味着在你的頭文件中定義一些東西,這是包含在多個編譯單元中的。你可以在頭文件中「extern」它,並確保它是在單獨的編譯團隊中定義的。
從編譯器錯誤,它看起來像你已經定義了一個指向你的頭文件中的函數指針數組。外部這個並在源文件中提供一個單一的定義。
此代碼有效地引起該問題:
//--- Def.h
#ifndef DEF_H
#define DEF_H
float foo();
/*extern */float (*floatFunctionArray[3])();
#endif /* DEF_H */
//--- Def.cpp
#include "Def.h"
float foo()
{
return 0;
}
float (*floatFunctionArray[3])() =
{
foo, foo, foo
};
//--- main.cpp
#include "Def.h"
int
main(int argc, char** argv)
{
return 0;
}
添加註釋「外部」解決了這個問題。
使用頭文件:http://stackoverflow.com/q/4767068/992406 – houssam
頭文件中'* v'塊的樣子是什麼?它應該只是一個聲明,並且您只需要一個cpp文件中的定義。 – Rup