如何从 C++ 使用 FTGL C API?
Posted
技术标签:
【中文标题】如何从 C++ 使用 FTGL C API?【英文标题】:How to use the FTGL C API from C++? 【发布时间】:2013-08-05 14:57:57 【问题描述】:如何在 Visual Studio 2010 的 C++ 代码中使用 FTGL 的 C API?
FTGL uses #ifdef __cplusplus
checks 从相同的头文件中导出 C 和 C++ API。
我试过了:
#ifdef __cplusplus
#undef __cplusplus
#include <FTGL/ftgl.h>
#define __cplusplus
#else
#include <FTGL/ftgl.h>
#endif
但是 VS2010 没有它:
warning C4117: macro name '__cplusplus' is reserved, '#undef' ignored
warning C4117: macro name '__cplusplus' is reserved, '#define' ignored
【问题讨论】:
你为什么要这么做?既然 FTGL 的标头会检测到__cplusplus
本身,为什么你需要说你正在从 C 代码中查看标头来欺骗它呢?让标题完成它的工作。
因为我想在 C++ 代码中使用 C API。
【参考方案1】:
宏 __cplusplus
是一个保留宏,如果您将其编译为 C++ 代码(并且没有以其他方式定义),则应该由您的编译器自动定义。您不必手动 #define
它,这就是您的编译器抛出错误的原因。
【讨论】:
【参考方案2】:如何在 Visual Studio 2010 中通过 C++ 代码使用 FTGL 的 C API?
你没有。
FTGL 的制造商显然不希望 C++ 用户使用 C API。所以他们不让他们。
__cplusplus
宏是 C++ 语言的一部分;它不能是未定义的。或定义。或者重新定义。而且由于这就是 FTGL 的关键,所以没有办法让它合规。
避免这种情况的唯一方法是编辑 FTGL 本身。
【讨论】:
以上是关于如何从 C++ 使用 FTGL C API?的主要内容,如果未能解决你的问题,请参考以下文章
如何构建和使用 Google TensorFlow C++ api