我一直在使用C ++并使用clang ++进行编译。我想为我正在编写的X11程序包含<xcb / xkb.h>头文件。
不幸的是,此标题使用了explicit
作为一些字段名称(例如第727行),而这是C ++中的关键字。
有没有办法解决这个问题?
xcb / xkb.h :
// ...
#ifdef __cplusplus
extern "C" {
#endif
// ...
typedef struct xcb_xkb_set_explicit_t {
xcb_keycode_t keycode;
uint8_t explicit;
} xcb_xkb_set_explicit_t;
// ...
#ifdef __cplusplus
}
#endif
// ...
extern "C"
不代表“将此代码编译为 C 语言”。请注意,此关键字仅用于指定特定函数应该使用 C 链接约定进行编译,而不是 C++ 链接约定。 - Pete Beckernew
的结构体成员,需要重命名,这导致现有代码出现问题。这就是为什么 C 语言已经停止添加关键字,除非以双下划线开头或由新的头文件声明。 - Davislorexplicit_
或其他名称。 - BЈовић