objective c - How do I properly declare a global variable in a header file? -


i testing code declare global variable in header file, i'm getting linker error: "duplicate symbol"

header file:

// //  globalvaraibleclass.h //  globalvar //   #import <foundation/foundation.h>  int gglobalvar = 0; @interface globalvaraibleclass : nsobject  @end 

class file:

// //  globalvaraibleclass.m //  globalvar //  #import "globalvaraibleclass.h"  @implementation globalvaraibleclass  @end 

main:

// //  main.m //  globalvar //  #import <foundation/foundation.h> #import "globalvaraibleclass.h" int main(int argc, const char * argv[]) {      @autoreleasepool {          extern int gglobalvar;          nslog(@"hello, world! %i", gglobalvar);      }     return 0; } 

where going wrong?

that backwards, extern goes in header, declaration setting value goes in implementation file.

the extern specifies variable declared somewhere else. if declaration in header every time header included there declaration , @ link time there multiple definitions not link.

example:

//  globalvaraibleclass.h         extern int gglobalvar;  //  globalvaraible.m #import "globalvaraibleclass.h" int gglobalvar = 3;  //  main.m #import <foundation/foundation.h> #import "globalvaraibleclass.h" int main(int argc, const char * argv[]) {     @autoreleasepool {          nslog(@"hello, world! %i", gglobalvar);      }     return 0; } 

Comments

Popular posts from this blog

java - How to specify maven bin in eclipse maven plugin? -

single sign on - Logging into Plone site with credentials passed through HTTP -

php - Why does AJAX not process login form? -