D - Previous Definition Different - workaround?
- Sark7 (31/31) Feb 26 2004 I have the following code:
I have the following code: [test.d] import testmod; void main() { printf("%d ", bar()); printf("%d ", Tfoo!(int).foo()); // {1} } [testmod.d] module testmod; template Tfoo(T) { T foo() { return 1; } } // C!(int) c_int; // {2} // alias Tfoo!(int) foo_int; // {3} int bar() { return Tfoo!(int).foo(); } When I try to compile this via explicit .obj linking, ie: dmd -c test.d dmd -c testmod.d dmd test.obj testmod.obj I got error: testmod.obj(testmod) Offset 00139H Record Type 00C3 Error 1: Previous Definition Different : _D7testmod06Tfoo_i3fooFZi If I comment {1} - no error, compiling is ok. If I uncomment {2} or {3} - no error, compiling is ok. DMD needs template instantiation in module with template declaration? P.S. When I just execute "dmd test.d testmod.d", I got no errors and all is fine. -- Sark7
Feb 26 2004