如何为自定义结构编写类似于CGRectZero的宏

时间:2014-01-22 07:56:21

标签: ios struct macros c-preprocessor

我有一个自定义结构,我希望有一个类似于CGRectZero的定义。

这样我可以有一个我可以测试的无效结构的无效结构。

2 个答案:

答案 0 :(得分:3)

它是c和目标c代码的混合器。在这种情况下,您必须使用.mm扩展名来命名该文件。

#define MyStructZero MyStructMake(0,0)

MyStruct MyStructsMake(int,int);

typedef struct MyStruct {
    int a;
    int b;
} MyStruct;

c功能

MyStruct MyStructMake(int a, int b)
{
    MyStruct s;
    s.a = a;
    s.b = b;
    return s;
}

在对象中进行测试

 - (void) testStruct
    {
        MyStruct m = MyStructZero;
        NSLog(@"%i", m.a);

    }

答案 1 :(得分:2)

由于CGRectZero等同于CGRectMake(0, 0, 0, 0),因此您应该使用类似的方法。编写一个初始化结构并制作宏的函数:

MyStructMake(int i, float f, char c, double d);
#define MyStructZero MyStructMake(0, 0.0, '0', 0.0)