可以从.cpp文件中包含以下内容,编译器不会对此进行抱怨。
typedef struct _SomeName {
char NameID[MaxSize];
UserId notUsed;
UserInstance instance;
bool operator==(const struct _SomeName& rhs) const
{
return (strncmp(NameID, rhs.NameID, MaxSize) == 0);
}
bool operator!=(const struct _SomeName& rhs) const { return !(*this == rhs); };
} SomeName;
如何重写上面的内容,以便可以从.c文件中包含它?
最佳答案
到目前为止发布的其他解决方案存在一个问题,您不能在混合C和C++的项目中使用它。从你的问题的背景来看,我猜你可能想这么做。如果尝试这样做,可能会出现静默的未定义行为,因为该结构可能在不同的翻译单元中具有不同的布局。
我建议这个版本:
typedef struct
{
char NameID[MaxSize];
UserId notUsed;
UserInstance instance;
} SomeName;
#ifdef __cplusplus
inline bool operator==( SomeName const &lhs, SomeName const &rhs )
{
return strcmp(lhs.NameID, rhs.NameID) == 0;
}
inline bool operator!=( SomeName const &lhs, SomeName const &rhs )
{
return !operator==( lhs, rhs );
}
#endif
关于c++ - C中的Struct编译器问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26266782/