gpt4 book ai didi

objective-c - 如何在编译时测试定义的宏是否为空(Cbjective-C/c)?

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:29 25 4
gpt4 key购买 nike

是否可以检查我的定义是否为空? IS_EMPTY_OR_UNDEFINED 是我刚刚想出的虚构宏。

#define constantA 0
#define constantB 1
#define constantC null
#define constantF ""
#define constantH

#if IS_EMPTY_OR_UNDEFINED(constantA)
# error constantA is defined 0 and the above if should not be true - this line should not run
#endif

#if IS_EMPTY_OR_UNDEFINED(constantB)
# error constantB is defined 1 and the above if should not be true - this line should not run
#endif

#if IS_EMPTY_OR_UNDEFINED(constantC)
# error constantC is defined null and the above if should not be true - this line should not run
#endif

#if IS_EMPTY_OR_UNDEFINED(constantF)
# error constantF is defined "" and the above if should not be true - this line should not run
#endif

#if ! IS_EMPTY_OR_UNDEFINED(constantH)
# error constantH is defined empty and the above if should not be true - this line should not run
#endif

#if defined(undefinedConstant) && ! IS_EMPTY_OR_UNDEFINED(undefinedConstant)
# error undefinedConstant is not defined and the above if should not be true - this line should not run
#endif

最佳答案

可以检查表达式是否为空(取模一些非常奇异的边界情况),但该技术有些复杂。 P99有一个执行此操作的宏,您可以将其用作

#if !defined(constantA) || P99_IS_EMPTY(constantA)
...
#endif

C 标准不允许将它组合到一个宏中。从 C11 6.10.1 p4 开始,标记 defined 不允许在宏或其他表达式中使用。

关于objective-c - 如何在编译时测试定义的宏是否为空(Cbjective-C/c)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com