我在编写使用为C文件设计的头文件的C++代码时遇到了问题。特别是,头文件使用了一个名为class的变量名:
int BPY_class_validate(const char *class_type, PyObject *class, PyObject *base_class, BPY_class_attr_check* class_attrs, PyObject **py_class_attrs);这在C中是可行的,因为class不是关键字,但在C++中,class是关键字。那么有没有什么办法可以将这个头文件包含到一个c++文件中,或者我是不是不走运?
谢谢。
发布于 2010-05-16 02:15:53
尝试如下所示:
#define class class_variable
// if class is only used in declarations, you can also do
// #define class
#include "c.h"
#undef class这可能会带来问题,但也许值得一试。
替代(使用Makefile):
python_.hpp: /usr/include/python.h
perl -pe 's/\Wclass\W//g' $< > $@
...
#include "python_.hpp"发布于 2010-05-16 02:25:19
如果这只是声明,那么变量名就无关紧要了。你可以完全删除它们,或者随心所欲地更改它们。这是因为声明仅定义了函数的名称和类型,即:
int BPY_class_validate(const char *, PyObject *, PyObject *,
BPY_class_attr_check*, PyObject **);但是如果你想要名字(更具描述性),你可以在你所拥有的东西的末尾加上一个下划线:
int BPY_class_validate(const char *class_type, PyObject *class_,
PyObject *base_class, BPY_class_attr_check* class_attrs,
PyObject **py_class_attrs);这不会破坏任何其他代码。
发布于 2010-05-16 02:15:19
您始终可以使用#ifdef __cplusplus在该标头中创建特定于C++的声明
https://stackoverflow.com/questions/2841204
复制相似问题