2013-02-28 59 views
-2

那麼正如標題所說,我不斷收到一個未定義的引用錯誤,但我不知道爲什麼..未定義的引用。 - MinGW的 - WINXP - 日食JUNO

我有有一個主程序我想要使​​用的函數頭包含在內,因此它被包含在定義函數的cpp文件中。 我還包括項目設置的路徑

我知道我應該發佈代碼,但我不被允許這樣做,但仍然希望我可以得到一些提示解決這個錯誤。

在此先感謝

UART_write(UARTvar, LVL); //This is where I call the function 

int UART_write(int uart, const char* var);//Declaration in the header 

int UART_write(int uart, const char* var) 
{ 
return (int)1;//just for testing 
} 

未定義的參考`UART_write」

+0

此外,當我按F3(用於去聲明/定義,它發現聲明和定義) – jj01 2013-02-28 09:58:36

+0

它錯過了需要鏈接的庫。 – SChepurin 2013-02-28 10:00:29

+0

你能更具體嗎?確切的錯誤,你的代碼的一部分? – Alex 2013-02-28 10:00:44

回答

1

如果您有以下項目結構:

header.h:

#ifndef _HEADER_H_ 
#define _HEADER_H_ 

int UART_write(int uart, const char* var); 

#endif 

main.c中:

#include "header.h" 

int main() 
{ 
    ... 
    UART_write(UARTvar, LVL); 
    ... 
} 

所以請確保您有沒有在任何其他地方定義_HEADER_H_,因爲在這種情況下UART_write()原型將不包括在建。

另外請檢查UART_write()原型沒有放置#if#ifdef#endif預處理器命令之間。

而最後一個,你可以通過在你的頭文件中的UART_write()原型之前添加#error "This code is compiled"來檢查。如果編譯了這部分代碼,那麼您將收到編譯錯誤This code is compiled

+0

感謝提示:) 發現錯誤:以某種方式無法管理該文件是* .cpp文件,因此將它改爲* .c後就可以工作了。 – jj01 2013-02-28 13:18:57