如何测试是否定义了只能通过#define宏访问的标识符?

格拉斯

我有一个#define映射标识符(函数名称)到这样的新名称:

#define A doStuff

这部分我无能为力,我必须访问“ A”,因为实际的标识符(此处为doStuff)可能会更改(并且这不在我的控制之下)。现在,所引用的符号(doStuff)可能存在或不存在,我想在前一种情况下调用该函数。对于简单的函数名,我可以轻松地对其进行测试:

#ifdef doStuff
    doStuff();
#endif

但是,受限于宏名称,天真地做同样的事情是:

#ifdef A
    A();
#endif

由于定义了名称“ A”,而未定义“ doStuff”,因此会出现错误。我想检查宏解析成的名称的存在,本质上是:

#if defined(the-content-of-A)

但我无法使其工作。

所以我的问题是:有没有办法检查是否定义了由宏表示的标识符?如果是,该怎么办?如果不是,是否有一种通用的解决方法?

尽管我认为这不是C或C ++特定的,但我想指出的是,我需要一些可用于C ++中定义的“ extern C”标识符的东西。该解决方案必须独立于平台。

对不起,如果以前问过这个问题,无论是在google还是在SO上,我都找不到。

乌尔里希·埃克哈特(Ulrich Eckhardt)

定义标识符(函数,对象)是在预处理之后发生的事情,因此您无法在预处理期间确定是否稍后定义函数。

解决方法是,您始终在函数旁边定义一个宏:

void A();
#define A_SUPPLIED

然后对此进行测试:

#ifdef A_SUPPLIED
...
#endif

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何知道Unicode标识符是否有效?

来自分类Dev

标识符未定义

来自分类Dev

如何测试是否定义了变量?

来自分类Dev

标识符未定义

来自分类Dev

标识符未在宏中定义

来自分类Dev

实现定义的标识符的JavaScript约定

来自分类Dev

宏以创建多个相似的标识符进行测试

来自分类Dev

Clojure是否具有标识符宏?

来自分类Dev

警告C4005'标识符':宏重新定义

来自分类Dev

如何检查是否定义了类似函数的宏?

来自分类Dev

如何在宏内给标识符加上前缀/后缀?

来自分类Dev

如何确定定义特定标识符的包装?

来自分类Dev

如何通过具有不同捆绑标识符的应用程序访问iCloud容器数据?

来自分类Dev

如何通过具有不同捆绑标识符的应用程序访问iCloud容器数据?

来自分类Dev

如何在程序宏生成的代码中创建卫生标识符?

来自分类Dev

标识符如何既已声明又未定义?

来自分类Dev

通过名称/标识符访问默认函数参数值

来自分类Dev

带宏的动态标识符

来自分类Dev

Scala宏类型检查如何将标识符解析为类型?

来自分类Dev

如何通过自定义标识符选择硒中的元素

来自分类Dev

如何制作自定义路径标识符?

来自分类Dev

标识符未在宏中定义

来自分类Dev

如何通过标识符在情节提要中获取ViewController?

来自分类Dev

通过标识符查找子视图

来自分类Dev

可访问性标识符停止查找用于 UI 测试的元素

来自分类Dev

如何测试宏中的标识符是否以下划线开头?

来自分类Dev

如何使用自定义标识符启动实例

来自分类Dev

如何修复错误标识符“PlayerViewPointLocation”未定义

来自分类Dev

如何通过标识符(名称、Uid...)访问用户控件?

Related 相关文章

热门标签

归档