我是个有代码“洁癖”的人,不愿意与警告为伍,哪怕是只有一个,也会让我浑身上下都不舒服。在一次整改一个嵌入式ARM工程源代码的过程中,一个编译告警迷惑了我,费了我不少时间。
ADS提示:
Waring : c2207w : inventing 'extern InitUartPos();'
main.c line 87
按理说不应该出现这种告警,因为main.c中已包含了对函数“InitUartPos()”的声明文件“UartPos.h”
#include "UART.h" //declare in main.c
#include "UartPos.h" //declare in main.c
以下是“UartPos.H”中“InitUartPos”函数的声明
#ifndef __UART_H__
#define __UART_H__
#include "44b.h"
……
void InitUartPos(unsigned mclk, unsigned bps);
// 初始化POS串口
……
#endif
看来,无论如何也不会有“函数InitUartPos()未声明”的错误。查了几次,都觉得这个编译器告警不可思议。后来某天,无意中打开了“UART.H”头文件,发现该文件内容如下:
#ifndef __UART_H__
#define __UART_H__