On Oct 17, 2010, at 12:05 PM, Kyle Sluder wrote:
> On Oct 16, 2010, at 8:31 PM, Ken Tozier <[email protected]> wrote:
>> 
>> I want to create some inline functions that are universally available within 
>> my app, but can't seem to get them working. If I define a set of inlines 
>> within a specific class, they compile, but If I take the same functions and 
>> move them to a dedicated "inlines" file and include that, it doesn't. The 
>> compiler spits out the following:
>> 
>> _UtilScaleRectSize", referenced from:
>> -[MyView initWithContainer:frame:] in MyVieww.o
>> ld: symbol(s) not found
>> collect2: ld returned 1 exit status
>> 
>> Here's what works when the inlines are defined for a specific class
>> 
>> static inline void UtilScaleRectSize(NSRect inRect, float inScale)
> 
> Think about this for a second: "static" means file scope, so obviously you 
> can't reference the symbol from another file. And non-static inlines can't 
> actually be inlined because they may be called from elsewhere or have their 
> addresses taken. So inline is useless to you. Just use an appropriate -O 
> option that does whole-program transformation.

A static inline function should work just fine. You need to define it in a 
header file, and include that header file everywhere you want to use it.

// inlines.h
static inline void UtilScaleRectSize(NSRect inRect, float inScale) {
    // your code here
}

// MyView.m
#include "inlines.h"
void fn(void) {
        UtilScaleRectSize(r, s);
}


Note that there is no inlines.m. If your code is structured like this, 
double-check that the #include is working as you expect (and not failing 
because of an include cycle or search path problem or precompiled header 
surprise). Open MyView.m and run Build > Preprocess. That will show you the 
file with all of the #includes resolved. You should be able to find your 
definition of UtilScaleRectSize() in the file, and the place you call it after 
that. If the definition is missing, or the call site is before the definition, 
then it'll fail.


-- 
Greg Parker     [email protected]     Runtime Wrangler


_______________________________________________

Cocoa-dev mailing list ([email protected])

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