digitalmars.D - Offset of globals in linking time.
- JDavidls (13/13) Feb 04 2013 Hi
- Peter Alexander (4/6) Feb 04 2013 That's because a is not a global variable, it is thread local.
- JDavidls (1/2) Feb 04 2013 Oh, thanks
- =?UTF-8?B?QWxpIMOHZWhyZWxp?= (11/24) Feb 04 2013 Another option is to initialize in a 'static this()' block:
Hi I need to initialize a global variable with a pointer to another global variable but dmd compler raises an error: uint a = 5; uint* p = &a; // error: non-constant expression & a const uint* cp = &a; // error: non-constant expression & a All C compilers support this assignation ¿whi dlang cannot? I think this is a great limitation for writing huge dependent of initial-state defined program as a virtual machine (in this case). --- Just try it with ldc, appears to work. I'm also compiling gdc for test with it. Thanks,
Feb 04 2013
On Monday, 4 February 2013 at 20:16:54 UTC, JDavidls wrote:I need to initialize a global variable with a pointer to another global variable but dmd compler raises an error:That's because a is not a global variable, it is thread local. Try: __gshared uint a = 5;
Feb 04 2013
That's because a is not a global variable, it is thread local.Oh, thanks
Feb 04 2013
On 02/04/2013 12:16 PM, JDavidls wrote:Hi I need to initialize a global variable with a pointer to another global variable but dmd compler raises an error: uint a = 5; uint* p = &a; // error: non-constant expression & a const uint* cp = &a; // error: non-constant expression & a All C compilers support this assignation ¿whi dlang cannot? I think this is a great limitation for writing huge dependent of initial-state defined program as a virtual machine (in this case). --- Just try it with ldc, appears to work. I'm also compiling gdc for test with it. Thanks,Another option is to initialize in a 'static this()' block: uint a = 5; uint* p; const uint* cp; static this() { p = &a; cp = &a; } Ali
Feb 04 2013