iOS 宏的写法

#define kMIN(A,B) A < B ? A : B    不准确

#define kMIN(A,B) ({__typeof__(A) _a = (A); __typeof__(B) _b = (B); _a < _b ? _a : _b;})

int  j  = 3 ;
    int  q  = 4 ;
    //通过## 可以将3和4连接到一起 .
    j##q;

#define __NSX_PASTE__(A,B) A##B

#if !defined(MIN)
    #define __NSMIN_IMPL__(A,B,L) ({ __typeof__(A) __NSX_PASTE__(__a,L) = (A); __typeof__(B) __NSX_PASTE__(__b,L) = (B); (__NSX_PASTE__(__a,L) < __NSX_PASTE__(__b,L)) ? __NSX_PASTE__(__a,L) : __NSX_PASTE__(__b,L); })
    #define MIN(A,B) __NSMIN_IMPL__(A,B,__COUNTER__)
#endif

时间: 2024-10-12 18:38:36

iOS 宏的写法的相关文章

iOS 宏(define)与常量(const)的正确使用

在iOS开发中,经常用到宏定义,或用const修饰一些数据类型,经常有开发者不知怎么正确使用,导致项目中乱用宏与const修饰你能区分下面的吗?知道什么时候用吗?#define HSCoder @"汉斯哈哈哈"NSString *HSCoder = @"汉斯哈哈哈";extern NSString *HSCoder;extern const NSString *HSCoder;static const NSString *HSCoder = @"汉斯哈哈哈

【转】iOS 宏(define)与常量(const)的正确使用-- 不错

原文网址:http://www.jianshu.com/p/f83335e036b5 在iOS开发中,经常用到宏定义,或用const修饰一些数据类型,经常有开发者不知怎么正确使用,导致项目中乱用宏与const修饰 你能区分下面的吗?知道什么时候用吗? #define HSCoder @"汉斯哈哈哈" NSString *HSCoder = @"汉斯哈哈哈"; extern NSString *HSCoder; extern const NSString *HSCod

ios 宏定义 系统版本 判定

====================================================== 当需要判断iOS系统版本的时候,相信很多人都会这么干: #define SystemVersion [[UIDevice currentDevice] systemVersion].floatValue 现在告诉屌丝们一个更好的办法就是其实系统已经做了类似的宏定义,不需要我们再去定义了 在Simulator-IOS7.0/usr/include/Availability.h中已经定义了很

iOS宏定义的使用与规范

http://my.oschina.net/leejan97/blog/354904 宏定义在很多方面都会使用,例如定义高度.判断iOS系统.工具类,还有诸如文件路径.服务端api接口文档.为了对宏能够快速定位和了解其功能,我们最好在定义的时候将其放入特定的头文件中,下面我抛砖引玉,对一些常用的宏进行分类.分文件定义,希望对大家有所帮助. 定义尺寸类的宏 DimensMacros.h //状态栏高度 #define STATUS_BAR_HEIGHT 20 //NavBar高度 #define

iOS单例写法简析

官方文档这样写的: static AccountManager *DefaultManager = nil; + (AccountManager *)defaultManager { if (!DefaultManager) DefaultManager = [[self allocWithZone:NULL] init]; return DefaultManager; } 在iOS4之后有了另外一种写法: + (AccountManager *)sharedManager { static A

高效的iOS宏定义

iOS开发过程中使用一些常用的宏可以提高开发效率,提高代码的重用性:将这些宏放到一个头文件里然后再放到工程中的-Prefix.pch文件中(或者直接放到-Prefix.pch中)直接可以使用,灰常方便. 本文整理自http://www.cocoachina.com/applenews/devnews/2013/0328/5907.html . 做了一些分类和注释,可以根据自己习惯再添加或者删除或者修改这些宏进行使用. [cpp] view plaincopy // //  MacroDefini

ios宏定义应该呆在恰当的地方

项目为了看起来整洁 并减少不必要的多次拼写 我们会把这样的方法 做成宏定义 那么问题来了 很多文件同时用到一个或多个宏定义 写完之后就会变成这个样子 看起来很乱 阅读性也不好 那么问题来了怎么解决嘞 我要发功了 把所有的宏定义都写入一个文件 然后那个用到宏定义 直接导入TRMacro就可以了 是不是很吊 虽然很基础 但是很实用

c++ 编译时检测结构体大小的的宏定义写法

一种写法: template <bool> struct CompileAssert { }; #define COMPILE_ASSERT(expr, msg) \ typedef CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] } //endof namespace 第二种写法: 1 #define CAT_TOKEN_1(t1,t2) t1##t2 2 #define CAT_TOKEN(t1,t2) CAT_TOKE

IOS单例模式推荐写法(转载)

1 +(instancetype)sharedUserLoginModel{ 2 3 static YLWUserLoginModel *instance; 4 5 static dispatch_once_t onceToken; 6 7 dispatch_once(&onceToken, ^{ 8 9 instance = [[YLWUserLoginModel alloc]init]; 10 11 }); 12 return instance; 13 14 } 这种写法的好处是: 1. 线