Как сделать производителя структуры как CGRectMake (iphone)

у меня есть структура HLRange с двумя CGFloat's

struct HOLRange
{
CGFloat min;
CGFloat max;
};
typedef struct HOLRange HOLRange;

но как делают я делаю функцию как HLRangeMake (1,2);.. как CGRectMake?

Править--

мой заголовочный файл

#import <Foundation/Foundation.h>

struct HOLRange
{
    CGFloat min;
    CGFloat max;
};
typedef struct HOLRange HOLRange;

HOLRange HOLRangeMake(CGFloat min, CGFloat max) {
    HOLRange range;
    range.min = min;
    range.max = max;
    return range;
 }

@interface Structs : NSObject {

}

@end


error message: ld: duplicate symbol _HOLRangeMake in             /Users/Documents/projects/iphone/test/catalog/base1/build/base1.build/Debug-iphoneos/base1.build/Objects-normal/armv6/base1AppDelegate.o and /Users/Documents/projects/iphone/test/catalog/base1/build/base1.build/Debug-iphoneos/base1.build/Objects-normal/armv6/main.o
8
задан Andy Jacobs 21 April 2010 в 04:25
поделиться

2 ответа

HOLRange HLRangeMake(CGFloat min, CGFloat max) {
    HOLRange range;
    range.min = min;
    range.max = max;
    return range;
}
16
ответ дан 3 November 2019 в 13:36
поделиться

Вы можете увидеть исходный код CGRectMake в CGGeometry.h так что вы можете сделать то же самое:

CG_INLINE CGRect
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
  CGRect rect;
  rect.origin.x = x; rect.origin.y = y;
  rect.size.width = width; rect.size.height = height;
  return rect;
}

Изменить: Вы должны либо определить свою функцию как встроенную, либо переместить ее реализацию в файл .m. Вы получаете ошибки компоновщика, когда ваша функция определяется в каждом модуле компиляции, который импортирует заголовок HoleRange.h (?).

7
ответ дан 3 November 2019 в 13:36
поделиться