gpt4 book ai didi

objective-c - OBJC_EXTERN : what's the purpose?

转载 作者:太空狗 更新时间:2023-10-30 03:51:48 28 4
gpt4 key购买 nike

Hi 在审查一些 Objective-C 代码时发现了以下语句:

OBJC_EXTERN void CLSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);

这是什么意思?另外,这个语句的语法应该是什么?

提前致谢。

最佳答案

OBJC_EXTERN<objc/objc-api.h> 中定义作为

#if !defined(OBJC_EXTERN)
# if defined(__cplusplus)
# define OBJC_EXTERN extern "C"
# else
# define OBJC_EXTERN extern
# endif
#endif

因此即使上面的声明是包含在 C++ 源文件中,例如此处解释的那样:

对于纯 C 代码,您可以只删除 OBJC_EXTERN ,因为 extern函数声明中不需要关键字。


NS_FORMAT_FUNCTION定义为

#define NS_FORMAT_FUNCTION(F,A) __attribute__((format(__NSString__, F, A)))

__attribute__((format(...)))是GCC特有的扩展,也理解通过 Clang:

它允许编译器检查可变参数列表的数量和类型针对格式字符串。例如

CLSLog(@"%s", 123);

会导致编译器警告,因为 %s是字符串的占位符,但是123是一个整数。

关于objective-c - OBJC_EXTERN : what's the purpose?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20746641/

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