布尔运算符==在typedef结构中

我如何将bool运算符==添加到struct bd_addr_t ? 我在C ++项目中使用这个文件。

#ifndef APITYPES_H_
#define APITYPES_H_

#ifdef __GNUC__

#define PACKSTRUCT( decl ) decl __attribute__((__packed__))
#define ALIGNED __attribute__((aligned(0x4)))

#else //msvc

#define PACKSTRUCT( decl ) __pragma( pack(push, 1) ) decl __pragma( pack(pop) )
#define ALIGNED

#endif


typedef unsigned char  uint8;
typedef unsigned short uint16;
typedef signed short   int16;
typedef unsigned long  uint32;
typedef signed char    int8;

typedef struct bd_addr_t
{
    uint8 addr[6];

}bd_addr;

typedef bd_addr hwaddr;
typedef struct
{
    uint8 len;
    uint8 data[];
}uint8array;

typedef struct
{
    uint8 len;
    int8 data[];
}string;

#endif

我试图添加

bool operator==(const bd_addr_t& a) const
    {
        return (addr[0] == a.addr[0] && addr[1] == a.addr[1] && addr[2] == a.addr[2] && addr[3] == a.addr[3] && addr[4] == a.addr[4] && addr[5] == a.addr[5]);
    }

但是这会在编译期间抛出两个错误:

unknown type name 'bool' bool operator==(const bd_addr_t& a) const

 expected ':', ',', ';', '}' or '__attribute__' before '==' token bool operator==(const bd_addr_t& a) const

你不能在C编译器使用的头文件中添加这样的函数。 其中一种方式可能是创建一个只用于C ++代码并添加独立函数的包装器头文件(它不能是一种方法,因为这需要在struct中声明,并使该代码与C不兼容):

#include <original_header.h>
#ifndef __cplusplus
#error This header is only to be included in C++ code
#endif 

bool operator==(const bd_addr_t& a, const bd_addr_t& b);

然后在.cpp文件中实现它,或者您可以在此头中实现它并使该函数inline

链接地址: http://www.djcxy.com/p/73789.html

上一篇: bool operator== within typedef struct

下一篇: The equality operator (==) in my class is not working