隐含的功能声明似乎有待确定

时间:2018-03-01 00:19:24

标签: c++ c atmel texas-instruments

我正在移植Texas Instruments SimpleLink驱动程序以与Xmega主机一起使用,并且在尝试构建它时会遇到一些隐式声明错误。我知道错误意味着什么,但据我所知,它应该被定义。我一定错过了什么,我希望有人可以帮助我。

这是错误输出,它表示函数CC3120Disable在device.c文件中隐式声明:

  

错误隐式声明函数'CC3120Disable'[-Werror = implicit-function-declaration] Xmega固件D:\ CC3120SDK_1.55.00.42 \ simplelink_sdk_wifi_plugin_1_55_00_42 \ source \ ti \ drivers \ net \ wifi \ source \ device.c 173

device.c非常庞大,所以这里是include,除了评论之外,它们是文件中的第一件事:

#include <ti/drivers/net/wifi/simplelink.h>
#include <ti/drivers/net/wifi/source/protocol.h>
#include <ti/drivers/net/wifi/source/driver.h>
#include <ti/drivers/net/wifi/source/flowcont.h>

第一个(simplelink.h)启动一个跟踪声明函数的位置,这是simplelink.h的第一部分,再次排除了前导注释:

#ifndef __SIMPLELINK_H__
#define __SIMPLELINK_H__

/* define the default types
 * If user wants to overwrite it,
 * he need to undef and define again */
#define _u8  unsigned char
#define _i8  signed char
#define _u16 unsigned short
#define _i16 signed short
#define _u32 unsigned long
#define _i32 signed long

#define _volatile volatile
#define _const    const

#include <ti/drivers/net/wifi/porting/user.h>

#ifdef    __cplusplus
extern "C"
{
#endif

user.h包含宏定义,告诉它使用函数CC3120Disable,以及包含该函数声明的include。这是user.h的第一部分,没有主要注释:

#ifndef __USER_H__
#define __USER_H__

#include "board.h"
#include "noos.h"
#include "SPI.h"

#ifdef  __cplusplus
extern "C" {
#endif

#include <string.h>

,这是user.h中定义宏的第371行:

#define sl_DeviceDisable()             CC3120Disable()

最后,这是我的所有board.h文件,它具有相关函数的声明:

#ifndef BOARD_H_
#define BOARD_H_

#ifdef  __cplusplus
extern "C"
{
#endif
#include <asf.h>
#include "SPI.h"

/* Typedefs */
//typedef void (*P_EVENT_HANDLER)(void* pValue);

/* Pins */
#define nHIB_PIN                IOPORT_CREATE_PIN( PORTD, 7 )
#define CC3120_INT_PIN          IOPORT_CREATE_PIN( PORTD, 6 )
#define CC3120_RESET_PIN        IOPORT_CREATE_PIN( PORTA, 1 )
#define CC3120_SLAVE_PIN        IOPORT_CREATE_PIN( PORTE, 0 )

#define LED_BLUE                IOPORT_CREATE_PIN( PORTA, 5 )
#define LED_GREEN               IOPORT_CREATE_PIN( PORTA, 6 )

/* USART pins */
#define USARTC0_XCK             IOPORT_CREATE_PIN( PORTC, 1 )
#define USARTC0_TXD             IOPORT_CREATE_PIN( PORTC, 3 )
#define USARTC1_XCK             IOPORT_CREATE_PIN( PORTC, 5 )
#define USARTC1_TXD             IOPORT_CREATE_PIN( PORTC, 7 )
//#define USARTD0_XCK               IOPORT_CREATE_PIN( PORTD, 1 )
//#define USARTD0_TXD               IOPORT_CREATE_PIN( PORTD, 3 )
//#define USARTD1_XCK               IOPORT_CREATE_PIN( PORTD, 5 )
//#define USARTD1_TXD               IOPORT_CREATE_PIN( PORTD, 7 )
#define USARTE0_XCK             IOPORT_CREATE_PIN( PORTE, 1 )
#define USARTE0_RXD             IOPORT_CREATE_PIN( PORTE, 2 )
#define USARTE0_TXD             IOPORT_CREATE_PIN( PORTE, 3 )
//#define USARTE1_XCK               IOPORT_CREATE_PIN( PORTE, 5 )
//#define USARTE1_TXD               IOPORT_CREATE_PIN( PORTE, 7 )
//#define USARTF0_XCK               IOPORT_CREATE_PIN( PORTF, 1 )
//#define USARTF0_TXD               IOPORT_CREATE_PIN( PORTF, 3 )

/* Functions */
void CC3120Disable( void );
void CC3120Enable( void );
uint8_t CC3120RegisterInterruptHandler( P_EVENT_HANDLER InterruptHdl , void* pValue );
void CC3120MaskIntHdlr( void );
void CC3120UnMaskIntHdlr( void );

void clock_init( void );
void init( void );

#ifdef  __cplusplus
}
#endif

#endif /* BOARD_H_ */

该函数在board.cpp中定义,这是该文件的开头,直到函数所在的位置:

#include <asf.h>
#include "board.h"
#include "socket.h"

/* Variables */
P_EVENT_HANDLER     CC3120IrqHandler = 0;
uint8_t             intIsMasked = 0;

/* Interrupt Handler */
ISR( PORTD_INT0_vect )
{
    if ( CC3120IrqHandler && !intIsMasked )
        CC3120IrqHandler( 0 );
}

void CC3120Disable()
{
    ioport_set_pin_level( nHIB_PIN, false );
}

它让我发疯,我无法弄清楚为什么它会为该函数抛出一个隐式声明错误。任何人都可以看到问题或建议尝试一下吗?

0 个答案:

没有答案