Hi Christian

If you really want a function to appear in multiple object files
you could declare them static, like in:

static void vec_zero2(int *vect)
{
        vec[0] = vec[1] = 0;
}

This is sometimes useful if you want to inline small functions
and not use preprocessor macros like this:

static inline char *code_long(char *dst, u_int32_t in)
{
        dst[0] = (in >> 24) & 0xff; // '&' for readability only
        dst[1] = (in >> 16) & 0xff;
        dst[2] = (in >>  8) & 0xff;
        dst[3] = (in >>  0) & 0xff; // '>>' for readability only

        return dst;
}

This works also mixing C and Obj-C:

static void callSomething(id myObject, int x, y)
{
        [myObject withX:x andY:y];
[myObject setTitle:[NSString stringWithFormat:@"Position: %d,%d", x, y]];
}

Of course this will increase your code size if you are not considering
the size of your static functions. 'otool' or the assembler listing within
XCode is useful to look at the generated code.

Everything else should be declared 'extern' and implemented in one
source file only. That's only my opinion, of course.

Regards,
Patrick

On 03.10.2008, at 13:19, Christian Giordano wrote:

Hi guys, I've few functions that I'm keeping on an external .h file.
If the header is included in more than a class I get duplicate symbol
error. I tried using #ifndef which I use on my C++ classes but didn't
bring any luck. I had a look to the various headers in the framework
and I saw they use the following sintax:

#define VEC_ZERO_2(a)                           \
{                                               \
  (a)[0] = (a)[1] = 0.0;                        \
}

Isn't there a way to achieve the same but having parameters and returns typed?


Thanks, chr

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to