Hi Divick,

I have very little experience with gcc/g++ so I can't comment on that.

As for Microsoft, since their own headers require their extensions, I'm 
a bit wary as to how ISO compliant their compiler really is. I haven't 
tried it with extensions turned off.

/Marcus

Divick Kishore wrote:
> Hi Marcus,
>                    Your explanation seems logical to me to if I 
> understand it correctly. But I thought Microsoft's compiler are more 
> strict about C++ standards although they don't comply too much with it. 
> What it really means is that most of the times they will implement a 
> super set of ISO standard. They generally have some extension which 
> would not be part of the ISO standard , but apart from extensions rest 
> will be more ISO complaint than say g++.
> 
> Thanks,
> Divick
> 
> 
> 
> Marcus Lindblom wrote:
>> Divick Kishore wrote:
>>   
>>> Hi Marcus,
>>>                 thanks for the reply.
>>>
>>>     
>>>>> Yes, the warning is totally ignorable. We've been running with it 
>>>>> disabled for over a year now. :)
>>>>>         
>>> Still that does not answer why VC7 gives those errors ? From a language 
>>> semantics perspective what really is wrong with that line?
>>>     
>> VC7.1 isn't very ISO C++ conformant, although it a lot better than it's 
>> predecessors. I'm not 100% sure but I think that extern wasn't in the 
>> standard when they released 7.1, hence the compiler warns that you are 
>> using something that's not in the standard (Or the MSVC-dev team didn't 
>> have time to fix it, VS71 is not exactly a thoroughly tested and 
>> overworked product). The warning is quite nice, but since the compiler 
>> has another slew of isses that are not standard which it doesn't warn 
>> for, this one makes little sense.
>>
>> The 'extern' keyword was meant to be used to define that the template 
>> specialization is instantiated in another compilation unit (i.e. 
>> cpp-file), rather than the current one, to avoid code-bloat of each .cpp 
>> generating code for, say, std::vector<int>. (This is reduced to one set 
>> of machine-code by the linker, so it only affects the size of your 
>> .obj-files.)
>>
>> So, this is all very nice in theory, but due to some issues with the 
>> template instantiation mechanism (I can't remember the details, but I 
>> think Herb Sutter wrote an article about it, search on www.gotw.ca) it 
>> doesn't really work as intended anyway.
>>
>> I think Visual 8 gives the warning: "'extern' keyword not supported." 
>> instead, but I'm not sure. I do know that neither VC7 nor VC8 implements 
>> it properly (I recall reading it in the docs) and that you still get the 
>> correct code (OpenSG runs fine on both VC7 and VC8), it justs take 
>> longer to compile and link.
>>
>> When I want to do something like 'extern' and get results, I usually end 
>> up with putting the template-source in the cpp-file and doing explicit 
>> instantiation there, for all types that my executable will need. This 
>> means two things: 1. no inlining. 2. all template functions get 
>> instantiated, not just the ones that are used (this can be serious since 
>> some of your templated class's functions might only compile with certain 
>> types, etc.).
>>
>> Perhaps the gcc guys have managed to get it to work properly (or at 
>> least for OpenSG's application thereof) so that would also explain the 
>> difference in compile speed for OpenSG on *nix vs. windows/msvc, as well 
>> as why extern is being used.
>>
>> Cheers,
>> /Marcus
>>
>>
>> Using Tomcat but need to do more? Need to support web services, security?
>> Get stuff done quickly with pre-integrated technology to make your job easier
>> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>> _______________________________________________
>> Opensg-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/opensg-users
>>
>>   
> 
> 
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> Opensg-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/opensg-users
> 


Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to