在 C++ 中使用元素名称为 new 的结构

问题描述 投票:0回答:1

我想在c++中使用

XColormapEvent
结构。

定义为

typedef struct {
int type;
unsigned long serial;
Bool send_event;
Display *display;
Window window;
Colormap colormap;
Bool new;
int state;
} XColormapEvent;

如您所见,有一个名为

new
的元素。

可以用c++访问吗?

简单的例子:

struct Y
{
        int new;
};

int main()
{
        Y y;
        y.new=5;  // expected unqualified-id before »new« 
}
c++ struct
1个回答
0
投票

您不能在 C++ 编译器中使用

new
作为变量名称,但可以

  1. 使用具有不同命名的 Modified 标头,ABI 不关心成员名称。
  2. 使用预处理器。
#define new new_mem
#include "troublesome_header.h"
#undef new

这不是标准的 C++ 和 UB 等,但它适用于所有编译器,它仅在标准使用的假设编译器中不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.