From: TROCHU X. <xt...@ya...> - 2003-05-12 13:08:03
|
--- Earnie Boyd <ear...@ya...> wrote: > The above test case is incorrect and should produce > a valid error > message, IMO. After all, we are telling the > compiler that the reference > to Foo is from an external global library. However, > other compilers > probably remove the __declspec(dllimport) in favor > of the local > definition. That doesn't mean that GCC should do > the same but at least > a consistent error message would be nice. > > Earnie. > > I agree with this, Declaring a variable or function to be defined in an external dll and then defining it should not be allowed in C. Even if it is a regression from gcc 3.1, if I remember correctly. But in C++ it is another matter: Look at this case, which seems to occur quite often : ----------------- class __attribute__((dllimport)) foo { public: void bar(); }; void bar(const foo & f) { f.bar(); } void foo::bar() { do_something(); } ------------------ If you allow a class to be declared dllimport, you should still accept function to be defined for inlining. So the problem still exists. As you have pointed out, even if this kind of code compiles without ICE with the C frontend, it does not generate correct code, i.e. the dllimport attribute is not discarded. Xavier __________________________________ Do you Yahoo!? The New Yahoo! Search - Faster. Easier. Bingo. http://search.yahoo.com |