2013-02-28 60 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