包括一个声明一个名为"new"的变量的C头?

Sta*_*ked 3 c++ openca

我正在尝试在C++应用程序中使用OpenCA(libPKI)库.但是,当包含文件pki_x509_data_st.h时,会遇到以下代码片段:

typedef struct pki_x509_callbacks_st {

 /* ---------------- Memory Management -------------------- */
 void * (*new)  (void    );
 void   (*free) (void *x );
 void * (*dup)  (void *x );
Run Code Online (Sandbox Code Playgroud)

由于"新"指针声明,这将无法编译.

我怎样才能使它工作?

更新
重命名"new"变量后,我遇到了一些新问题("在struct之后使用typedef name"等).我想避免改变过多的旧C代码(修改库标题会让我感到紧张)所以我决定只创建一个最小的隔离层.

sbi*_*sbi 6

#define new its_reserved_dammit
#include <pki_x509_data_st.h>
#undef new
Run Code Online (Sandbox Code Playgroud)

我怀疑链接器会对它感到不安.

但是,使用不准备使用C++的C库,链接器无论如何都会抱怨,因为标题缺少重要的extern "C"包装器...