8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何在 C++ 中包含使用 C++ 关键字作为标识符的 C 头文件?

PM. 1月前

112 0

我一直在使用 C++ 并使用 clang++ 进行编译。我想包括我正在编写的 X11 程序的标头。不幸的是,此标头对某些字段名称使用了显式名称(s...

我一直在使用 C++ 并使用 clang++ 进行编译。我想包括 <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

// ...

帖子版权声明 1、本帖标题:如何在 C++ 中包含使用 C++ 关键字作为标识符的 C 头文件?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由PM.在本站《c》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 一个解决方案是向您的 makefile 添加一个生成步骤,复制标题并重命名字段,并包含所述自动生成的标题。

    (在一般情况下,这很难甚至不可能做到,但在这种情况下,考虑到标题不太可能用于 explicit 其他任何用途,即使只是一个简单的( gnu ) sed s/\bexplicit\b/explicit_field/g 或类似的东西)也可以。棘手的部分是找出要复制的正确文件。)

    确保复制的标题的位置在包含路径中位于 之前 ,以防包含中的其他内容间接包含该标题。

    仅更改字段名称不会对 ABI 等产生任何影响,至少对于名义上与 C 兼容的标头而言。(在 C++ 中,重命名字段有时会产生影响。)

返回
作者最近主题: