/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
MSVS og c standert ?
Fra : James


Dato : 30-09-02 00:45

Hej NG.
Jeg hører og læser (blandt andent her) at MSVS ikke lever op til c
standarten i hver fald på en del punkter.
Nu er jeg stadig begynder i c og har brugt MSVS 6 fra næsten starten og
syntes den er rigtig god, specielt til at holde overblik, men syntes ikke
rigtig at kunne se hvor det er en ikke lever op til c standarten.
Er der nogen der kan fortælle mig hvor det er MSVS ikke lever op til c
standert og hvor det er de forskellige kompiler/værktøjer (msvs, borland
builder, gcc osv.) skiller sig ud fra hinanden med henblik på c standert.

På forhånd tak
James



 
 
Byrial Jensen (30-09-2002)
Kommentar
Fra : Byrial Jensen


Dato : 30-09-02 05:54

James <james@talent.dk> skrev:

> Er der nogen der kan fortælle mig hvor det er MSVS ikke lever op til c
> standert og hvor det er de forskellige kompiler/værktøjer (msvs, borland
> builder, gcc osv.) skiller sig ud fra hinanden med henblik på c standert.

Prøv at kigge i dokumentationen til de enkelte oversættere for
oplysninger om hvilke standarder de bruger, og hvilke udvidelser
og andre afvigelser de indeholder.

En god måde at teste programmers standard-overholdelse på, er at
forsøge at oversætte dem med flere forskellige oversættere. Man
kan også typisk bede en oversætter om at se bort fra egne
sprog-udvidelser og følge en bestemt standard mere strikt.

Mogens Hansen (30-09-2002)
Kommentar
Fra : Mogens Hansen


Dato : 30-09-02 15:26



"Byrial Jensen" <bjensen@nospam.dk> wrote in message
news:<slrnapfl4s.114.bjensen@ask.ask>...

[8<8<8<]
> Man kan
> også typisk bede en oversætter om at se bort fra egne sprog-udvidelser
> og følge en bestemt standard mere strikt.

Teoretisk: ja.
Konkret i praksis med Microsoft Visual C++ V6.0: nej.

Microsoft Visual C++ V6.0 har en option "Disable Language extensions"
(kommando-linie option "/Za").
Hvis man slår den til og oversætter Hello world:


<code>
#include <iostream>

using namespace std;

int main()
{
cout << "Hello world!" << endl;
}
</code>


Får man:

<Compiler messages>
Deleting intermediate files and output files for project 'fnyt - Win32
Debug'.
--------------------Configuration: fnyt - Win32 Debug--------------------
Compiling...
fnyt.cpp
c:\program files\microsoft visual studio\vc98\include\utility(81) : error
C2146: syntax error : missing ';' before identifier 'iterator_category'
c:\program files\microsoft visual studio\vc98\include\utility(84) :
see reference to class template instantiation 'std::iterator_traits<_It>'
being compiled
c:\program files\microsoft visual studio\vc98\include\utility(81) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\utility(84) :
see reference to class template instantiation 'std::iterator_traits<_It>'
being compiled
c:\program files\microsoft visual studio\vc98\include\utility(81) : error
C2501: 'iterator_category' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\utility(84) :
see reference to class template instantiation 'std::iterator_traits<_It>'
being compiled
c:\program files\microsoft visual studio\vc98\include\utility(82) : error
C2146: syntax error : missing ';' before identifier 'value_type'
c:\program files\microsoft visual studio\vc98\include\utility(84) :
see reference to class template instantiation 'std::iterator_traits<_It>'
being compiled
c:\program files\microsoft visual studio\vc98\include\utility(82) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\utility(84) :
see reference to class template instantiation 'std::iterator_traits<_It>'
being compiled
c:\program files\microsoft visual studio\vc98\include\utility(82) : error
C2501: 'value_type' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\utility(84) :
see reference to class template instantiation 'std::iterator_traits<_It>'
being compiled
c:\program files\microsoft visual studio\vc98\include\utility(83) : error
C2146: syntax error : missing ';' before identifier 'distance_type'
c:\program files\microsoft visual studio\vc98\include\utility(84) :
see reference to class template instantiation 'std::iterator_traits<_It>'
being compiled
c:\program files\microsoft visual studio\vc98\include\utility(83) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\utility(84) :
see reference to class template instantiation 'std::iterator_traits<_It>'
being compiled
c:\program files\microsoft visual studio\vc98\include\utility(83) : error
C2501: 'distance_type' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\utility(84) :
see reference to class template instantiation 'std::iterator_traits<_It>'
being compiled
c:\program files\microsoft visual studio\vc98\include\utility(226) : error
C2974: 'iterator' : invalid template argument for '_D', type expected
c:\program files\microsoft visual studio\vc98\include\utility(71) :
see declaration of 'iterator'
c:\program files\microsoft visual studio\vc98\include\utility(279) :
see reference to class template instantiation
'std::istreambuf_iterator<_E,_Tr>' being compiled
c:\program files\microsoft visual studio\vc98\include\utility(231) : error
C2146: syntax error : missing ';' before identifier 'int_type'
c:\program files\microsoft visual studio\vc98\include\utility(279) :
see reference to class template instantiation
'std::istreambuf_iterator<_E,_Tr>' being compiled
c:\program files\microsoft visual studio\vc98\include\utility(231) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\utility(279) :
see reference to class template instantiation
'std::istreambuf_iterator<_E,_Tr>' being compiled
c:\program files\microsoft visual studio\vc98\include\utility(231) : error
C2501: 'int_type' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\utility(279) :
see reference to class template instantiation
'std::istreambuf_iterator<_E,_Tr>' being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(25) : error
C2146: syntax error : missing ';' before identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(25) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(25) : error
C2501: 'size_type' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(26) : error
C2146: syntax error : missing ';' before identifier 'difference_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(26) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(26) : error
C2501: 'difference_type' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(27) : error
C2146: syntax error : missing ';' before identifier 'pointer'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(27) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(27) : error
C2501: 'pointer' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(28) : error
C2146: syntax error : missing ';' before identifier 'const_pointer'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(28) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(28) : error
C2501: 'const_pointer' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(29) : error
C2146: syntax error : missing ';' before identifier 'reference'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(29) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(29) : error
C2501: 'reference' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(30) : error
C2146: syntax error : missing ';' before identifier 'const_reference'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(30) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(30) : error
C2501: 'const_reference' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(31) : error
C2146: syntax error : missing ';' before identifier 'value_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(31) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(31) : error
C2501: 'value_type' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(32) : error
C2146: syntax error : missing ';' before identifier 'iterator'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(32) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(32) : error
C2208: 'struct std::iterator' : no members defined using this type
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(33) : error
C2146: syntax error : missing ';' before identifier 'const_iterator'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(33) : error
C2838: illegal qualified name in member declaration
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(33) : error
C2501: 'const_iterator' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(34) : error
C2065: 'const_iterator' : undeclared identifier
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(34) : error
C2065: 'value_type' : undeclared identifier
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(35) : error
C2065: 'const_reference' : undeclared identifier
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(35) : error
C2065: 'const_pointer' : undeclared identifier
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(35) : error
C2065: 'difference_type' : undeclared identifier
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(37) : error
C2955: 'iterator' : use of class template requires template argument list
c:\program files\microsoft visual studio\vc98\include\utility(71) :
see declaration of 'iterator'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(38) : error
C2065: 'reference' : undeclared identifier
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(38) : error
C2065: 'pointer' : undeclared identifier
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(45) : error
C2629: unexpected 'class std::basic_string<_E,_Tr,_A> ('
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(45) : error
C2334: unexpected token(s) preceding ':'; skipping apparent function body
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(48) : error
C2629: unexpected 'class std::basic_string<_E,_Tr,_A> ('
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(48) : error
C2334: unexpected token(s) preceding ':'; skipping apparent function body
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(53) : error
C2629: unexpected 'class std::basic_string<_E,_Tr,_A> ('
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(53) : error
C2334: unexpected token(s) preceding ':'; skipping apparent function body
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(55) : error
C2146: syntax error : missing ';' before identifier '_It'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(55) : error
C2501: '_It' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(56) : error
C2629: unexpected 'class std::basic_string<_E,_Tr,_A> ('
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(56) : error
C2334: unexpected token(s) preceding ':'; skipping apparent function body
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(63) : error
C2146: syntax error : missing ';' before identifier 'npos'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(63) : error
C2501: 'npos' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(78) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(79) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::append(const class
std::basic_string<_E,_Tr,_A> &)' : member function already defined or d
eclared
c:\program files\microsoft visual studio\vc98\include\xstring(76) :
see declaration of 'append'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(90) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(99) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::append(const _E *)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(90) :
see declaration of 'append'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(100) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(108) : error
C2061: syntax error : identifier '_It'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(109) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::append(void)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(100) :
see declaration of 'append'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(112) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(113) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::assign(const class
std::basic_string<_E,_Tr,_A> &)' : member function already defined or
declared
c:\program files\microsoft visual studio\vc98\include\xstring(110) :
see declaration of 'assign'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(132) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(138) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::assign(const _E *)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(132) :
see declaration of 'assign'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(139) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(146) : error
C2061: syntax error : identifier '_It'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(147) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::assign(void)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(139) :
see declaration of 'assign'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(148) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(150) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(152) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::insert(void)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(148) :
see declaration of 'insert'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(164) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(165) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::insert(void)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(148) :
see declaration of 'insert'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(175) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(176) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::insert(void)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(148) :
see declaration of 'insert'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(177) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(178) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::insert(void)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(148) :
see declaration of 'insert'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(192) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(195) : error
C2061: syntax error : identifier '_It'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(196) : error
C2535: 'void __thiscall std::basic_string<_E,_Tr,_A>::insert(struct
std::iterator)' : member function already defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(192) :
see declaration of 'insert'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(197) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(218) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(220) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(222) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::replace(void)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(218) :
see declaration of 'replace'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(241) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(243) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::replace(void)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(218) :
see declaration of 'replace'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(260) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(261) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::replace(void)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(218) :
see declaration of 'replace'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(262) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(264) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::replace(void)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(218) :
see declaration of 'replace'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(286) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(290) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::replace(struct std::iterator,struct
std::iterator,const _E *)' : member function already
defined or declared
c:\program files\microsoft visual studio\vc98\include\xstring(285) :
see declaration of 'replace'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(292) : error
C2061: syntax error : identifier 'size_type'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(296) : error
C2061: syntax error : identifier '_It'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(297) : error
C2535: 'class std::basic_string<_E,_Tr,_A> &__thiscall
std::basic_string<_E,_Tr,_A>::replace(struct std::iterator,struct
std::iterator)' : member function already defined or
declared
c:\program files\microsoft visual studio\vc98\include\xstring(292) :
see declaration of 'replace'
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
c:\program files\microsoft visual studio\vc98\include\xstring(297) : fatal
error C1003: error count exceeds 100; stopping compilation
c:\program files\microsoft visual studio\vc98\include\xstring(597) :
see reference to class template instantiation 'std::basic_string<_E,_Tr,_A>'
being compiled
Error executing xicl6.exe.

fnyt.exe - 102 error(s), 0 warning(s)
</Compiler messages>



Hvis man tillader language extionsens med Microsoft Visual C++ V6.0 får man:
<Compiler messages>
--------------------Configuration: fnyt - Win32 Debug--------------------
Compiling...
fnyt.cpp
f:\cpp\fnyt\fnyt.cpp(8) : warning C4508: 'main' : function should return a
value; 'void' return type assumed

fnyt.obj - 0 error(s), 1 warning(s)
</Compiler messages>

Hvilket er en absolut misvisende warning i forhold til Standard C++.


Hvis man tilsvarende slår language extions fra med Microsoft Visual C++ .NET
(V7.0) får man:

<Compiler messages>
------ Build started: Project: fnyt, Configuration: Debug Win32 ------

Compiling...
fnyt.cpp

fnyt - 0 error(s), 0 warning(s)


---------------------- Done ----------------------

Build: 1 succeeded, 0 failed, 0 skipped
</Compiler messages>


Man kan lige så godt acceptere det:
Hvis man er interesseret i overholdelse af C++ Standarden er Microsoft
Visual C++ V6.0 langt fra state-of-art, og der findes langt bedre
alternativer.


Venlig hilsen

Mogens Hansen




Byrial Jensen (30-09-2002)
Kommentar
Fra : Byrial Jensen


Dato : 30-09-02 17:22

Mogens Hansen <mogens_h@dk-online.dk> skrev:
> "Byrial Jensen" <bjensen@nospam.dk> wrote in message
>
>> Man kan
>> også typisk bede en oversætter om at se bort fra egne sprog-udvidelser
>> og følge en bestemt standard mere strikt.
>
> Teoretisk: ja.
> Konkret i praksis med Microsoft Visual C++ V6.0: nej.
>
> Microsoft Visual C++ V6.0 har en option "Disable Language extensions"
> (kommando-linie option "/Za").
> Hvis man slår den til og oversætter Hello world:
>
> [Gigantisk mængde uforståelige fejlmeddelelser]

Uha! Ja, det kan jeg godt se ikke dur. Gcc, som jeg normalt bruger,
er heldigvis bedre til at slå egne udvidelser fra hvis man beder om
det.

Thomas Lykkeberg (30-09-2002)
Kommentar
Fra : Thomas Lykkeberg


Dato : 30-09-02 18:47

On Mon, 30 Sep 2002 16:26:17 +0200, "Mogens Hansen"
<mogens_h@dk-online.dk> wrote:

>Microsoft Visual C++ V6.0 har en option "Disable Language extensions"
>(kommando-linie option "/Za").
>Hvis man slår den til og oversætter Hello world:
>
>Får man:
>
>--------------------Configuration: fnyt - Win32 Debug--------------------
>Compiling...
>fnyt.cpp
>c:\program files\microsoft visual studio\vc98\include\utility(81) : error
>C2146: syntax error : missing ';' before identifier 'iterator_category'
> c:\program files\microsoft visual studio\vc98\include\utility(84) :
> .....
>
>fnyt.exe - 102 error(s), 0 warning(s)
Det er jo nok heller ikke så underligt, idet <iostream> jo nok er
skrevet med henblik på at bruge MSVC++ language extentions. Det
beviser jo ingen ting. Det må jo være iostream som ikke er skrevet
portabelt. Iøvrigt compilerer du jo "fnyt.cpp" som C++ og ikke C

>Hvis man tillader language extionsens med Microsoft Visual C++ V6.0 får man:
><Compiler messages>
>--------------------Configuration: fnyt - Win32 Debug--------------------
>Compiling...
>fnyt.cpp
>f:\cpp\fnyt\fnyt.cpp(8) : warning C4508: 'main' : function should return a
>value; 'void' return type assumed
>
>fnyt.obj - 0 error(s), 1 warning(s)
></Compiler messages>
>
>Hvilket er en absolut misvisende warning i forhold til Standard C++.
Nej det er rigtigt nok, men nu er det .lib du linker på jo nok
interesseret i at main() returnerer en int da det jo er Win32/DOS som
kalder din funktion. Igen C++ og ikke C

Jeg har til dato været meget imponeret over "IJG Jpeg Library" som er
skrevet i C. Det kan kompilerer på alle de embeddede kompilere jeg har
brugt (ARM, H8, SH4 osv.)

Jeg tror nogle gange at de her C specs. læses lidt for firkantet. Jeg
havde ladet mig fortælle at der i virkeligheden er tale om en compiler
spec. og IKKE en C spec.

/Thomas

Mogens Hansen (01-10-2002)
Kommentar
Fra : Mogens Hansen


Dato : 01-10-02 05:45


"Thomas Lykkeberg" <thomasDOTlykkeberg@privatDOTdk> wrote in message
news:iu2hpusq7mbnp1t78q6dpo15mp8jend088@4ax.com...

[8<8<8<]
> Det er jo nok heller ikke så underligt, idet <iostream> jo nok er
> skrevet med henblik på at bruge MSVC++ language extentions.

Hvorfor skulle det være det ?
Hvorfor burde et program, skrevet fuldstændigt i overensstemmelse med C++
Standarden ikke kunne compileres uden sprogudvidelser ?
Bemærk at det, som jeg sagde, compilerer uden problemer som et C++ program
med Microsoft Visual C++ .NET uden nogen former for sprogudvidelser er
slået.

> Det
> beviser jo ingen ting.

Det viser at man ikke kan slå language extensions i Microsoft Visual C++
V6.0 fra og forvente at kunne skrive noget som helst praktisk brugbart C++.

> Det må jo være iostream som ikke er skrevet
> portabelt.

Det er fuldstændigt ligegyldigt. Compileren må bruge et hvilket som helst
trick for at implementere biblioteket - blot det ikke påvirker mig.
Header-filen behøves end ikke at eksistere.
Programmet var skrevet fuldstændigt i overenstemmelse med C++ Standarden.

> Iøvrigt compilerer du jo "fnyt.cpp" som C++ og ikke C

Det har du ret i - og James spurgte til overholdelse af C Standarden.
Programmet er ubetinget et C++ program.
Jeg kan ikke mindes at Microsoft Visual C++ V6.0 på denne nyhedsgruppe har
været alvorligt kritiseret for sin implementering af C, sådan som James
hævdede.
Derimod er den gentagne gange blevet alvorligt kritiseret for sin
implementering af C++ - bl.a. af mig.

[8<8<8<]
> Jeg tror nogle gange at de her C specs. læses lidt for firkantet.

Kan du uddybe det, i relation til et spørgsmål om hvordan Microsoft Visual
C++ V6.0 lever op til en standard ?

> Jeg
> havde ladet mig fortælle at der i virkeligheden er tale om en compiler
> spec. og IKKE en C spec.

Hvad mener du ?
Såvel C som C++ har en sprog-specifikation, som er vedtaget af ISO.
Det er absolut ikke en compiler specifikation.

Venlig hilsen

Mogens Hansen



james (01-10-2002)
Kommentar
Fra : james


Dato : 01-10-02 09:56

Jeg begynder så småt at kunne se hvad folk mener når de siger, at MSVS6 ikke
overholder C++ standert.
I øvrigt beklager jeg overskriften på mit spørgsmål. Der skulle stå C++ og
ikke C.
mvh James

"Mogens Hansen" <mogens_h@dk-online.dk> wrote in message
news:anb95l$fi5$1@news.cybercity.dk...
>
> "Thomas Lykkeberg" <thomasDOTlykkeberg@privatDOTdk> wrote in message
> news:iu2hpusq7mbnp1t78q6dpo15mp8jend088@4ax.com...
>
> [8<8<8<]
> > Det er jo nok heller ikke så underligt, idet <iostream> jo nok er
> > skrevet med henblik på at bruge MSVC++ language extentions.
>
> Hvorfor skulle det være det ?
> Hvorfor burde et program, skrevet fuldstændigt i overensstemmelse med C++
> Standarden ikke kunne compileres uden sprogudvidelser ?
> Bemærk at det, som jeg sagde, compilerer uden problemer som et C++ program
> med Microsoft Visual C++ .NET uden nogen former for sprogudvidelser er
> slået.
>
> > Det
> > beviser jo ingen ting.
>
> Det viser at man ikke kan slå language extensions i Microsoft Visual C++
> V6.0 fra og forvente at kunne skrive noget som helst praktisk brugbart
C++.
>
> > Det må jo være iostream som ikke er skrevet
> > portabelt.
>
> Det er fuldstændigt ligegyldigt. Compileren må bruge et hvilket som helst
> trick for at implementere biblioteket - blot det ikke påvirker mig.
> Header-filen behøves end ikke at eksistere.
> Programmet var skrevet fuldstændigt i overenstemmelse med C++ Standarden.
>
> > Iøvrigt compilerer du jo "fnyt.cpp" som C++ og ikke C
>
> Det har du ret i - og James spurgte til overholdelse af C Standarden.
> Programmet er ubetinget et C++ program.
> Jeg kan ikke mindes at Microsoft Visual C++ V6.0 på denne nyhedsgruppe har
> været alvorligt kritiseret for sin implementering af C, sådan som James
> hævdede.
> Derimod er den gentagne gange blevet alvorligt kritiseret for sin
> implementering af C++ - bl.a. af mig.
>
> [8<8<8<]
> > Jeg tror nogle gange at de her C specs. læses lidt for firkantet.
>
> Kan du uddybe det, i relation til et spørgsmål om hvordan Microsoft Visual
> C++ V6.0 lever op til en standard ?
>
> > Jeg
> > havde ladet mig fortælle at der i virkeligheden er tale om en compiler
> > spec. og IKKE en C spec.
>
> Hvad mener du ?
> Såvel C som C++ har en sprog-specifikation, som er vedtaget af ISO.
> Det er absolut ikke en compiler specifikation.
>
> Venlig hilsen
>
> Mogens Hansen
>
>



Mogens Hansen (02-10-2002)
Kommentar
Fra : Mogens Hansen


Dato : 02-10-02 05:48


"james" <james@talent.dk> wrote in message
news:Tqdm9.450539$P95.48516@post-03.news.easynews.com...
> Jeg begynder så småt at kunne se hvad folk mener når de siger, at MSVS6
ikke
> overholder C++ standert.

Bare for at gøre det helt klart:

Jeg er ikke kritisk over for implementeringen af C++ Standarden i Microsoft
Visual C++ V6.0 på grund af den manglende evne til at oversætte uden
language extensions optionen slået til. Jeg opfatter blot den options som
reelt værende ikke eksisterende.

Jeg er kritisk over for Microsoft Visual C++ V6.0 (og tidligere) på grund af
dens manglende evne til at oversætte relativt trivielle programmer, som
overholder C++ Standarden og compilerer på mange andre compilere.

> I øvrigt beklager jeg overskriften på mit spørgsmål. Der skulle stå C++ og
> ikke C.

Tak.
Det havde jeg godt på fornemmelsen.

Venlig hilsen

Mogens Hansen



james (02-10-2002)
Kommentar
Fra : james


Dato : 02-10-02 08:03

Takker for svaret.
mvh James

"Mogens Hansen" <mogens_h@dk-online.dk> wrote in message
news:andtks$8i0$1@news.cybercity.dk...
>
> "james" <james@talent.dk> wrote in message
> news:Tqdm9.450539$P95.48516@post-03.news.easynews.com...
> > Jeg begynder så småt at kunne se hvad folk mener når de siger, at MSVS6
> ikke
> > overholder C++ standert.
>
> Bare for at gøre det helt klart:
>
> Jeg er ikke kritisk over for implementeringen af C++ Standarden i
Microsoft
> Visual C++ V6.0 på grund af den manglende evne til at oversætte uden
> language extensions optionen slået til. Jeg opfatter blot den options som
> reelt værende ikke eksisterende.
>
> Jeg er kritisk over for Microsoft Visual C++ V6.0 (og tidligere) på grund
af
> dens manglende evne til at oversætte relativt trivielle programmer, som
> overholder C++ Standarden og compilerer på mange andre compilere.
>
> > I øvrigt beklager jeg overskriften på mit spørgsmål. Der skulle stå C++
og
> > ikke C.
>
> Tak.
> Det havde jeg godt på fornemmelsen.
>
> Venlig hilsen
>
> Mogens Hansen
>
>



Mogens Hansen (30-09-2002)
Kommentar
Fra : Mogens Hansen


Dato : 30-09-02 06:00


"James" <james@talent.dk> wrote in message
news:ZfMl9.90328$W9.1034068@news.easynews.com...

> Jeg hører og læser (blandt andent her) at MSVS ikke lever op til c
> standarten i hver fald på en del punkter.
> Nu er jeg stadig begynder i c og har brugt MSVS 6 fra næsten starten og
> syntes den er rigtig god, specielt til at holde overblik, men syntes ikke
> rigtig at kunne se hvor det er en ikke lever op til c standarten.

Er det ikke typisk C++ Standarden (ISO/IEC 14882:1998) som Microsoft Visual
C++ 6 med rette kritiseres for ikke at overholde ?

Man skal i denne sammenhæng passe på ikke at blande programmeringssproget C
og programmeringssproget C++ sammen.

> Er der nogen der kan fortælle mig hvor det er MSVS ikke lever op til c
> standert og hvor det er de forskellige kompiler/værktøjer (msvs, borland
> builder, gcc osv.) skiller sig ud fra hinanden med henblik på c standert.

Det er ikke trivielt at sammenligne i hvilken grad forskellige compilere
overholder C++ Standarden.

Der er mange områder - undersøg f.eks. hvilke punkter Microsoft har
forbedret MSVC .NET (V7.0).
Helt trivielle ting som:
* scope af variable i for sætning
* covariant return type
* en del fejl i namespace håndteringen i Standard Library
* ingen håndtering af exception specifikationer
* ingen patial template specialisering
* fejl i Standard Library
men der er langt flere ting.

Min erfaring er at hvis man skriver helt almindelig, banal, moderne Standard
C++ løber man generende tit ind i at faciliteterne ikke er understøttet.

Hvis man vil lære (Standard) C++ er man ubetinget bedre tjent med at anvende
noget andet end Microsoft Visual C++ V6.0.
Der er mange andre bedre bud, f.eks (nævn i tilfældig rækkefølge).
* gcc 3.1
* Comeau 4.3
* Intel C++ V6.0
* Borland C++Builder V6.0
* Microsoft Visual C++ .NET (V7.0)

Kun Comeau 4.3 hævder at være 100 % compliant.

Selvom Microsoft Visual C++ V7.0 er en væsentlig, og, tiltrængt forbedring i
forhold til V6.0 er den ikke en state-of-art compiler i relation til
overholdelse af C++ Standarden. F.eks. mangler partial template
specialisering og exception specifikationer fortsat.
En måde at se det på, er at Microsoft lover (og har lovet stort set i hele
V7.0's levetid) at V7.1 bliver væsentligt forbedret og bliver en af de mest
compliant compilere i relation til overholdelse af C++ Standarden.

Venlig hilsen

Mogens Hansen



Byrial Jensen (30-09-2002)
Kommentar
Fra : Byrial Jensen


Dato : 30-09-02 17:22

Mogens Hansen <mogens_h@dk-online.dk> skrev:
> "James" <james@talent.dk> wrote in message
>
> Hvis man vil lære (Standard) C++ er man ubetinget bedre tjent med at anvende
> noget andet end Microsoft Visual C++ V6.0.
> Der er mange andre bedre bud, f.eks (nævn i tilfældig rækkefølge).
> * gcc 3.1

Et endnu bedre bud end den er gcc 3.2.

Jeg oversætter jævnligt Mogens' gode eksempler på brug af C++.
Gcc 2.9x har ikke altid kunnet klare dem, men jeg har ikke indtil
nu oplevet problemer med gcc 3.1 og nyere.

Per Abrahamsen (01-10-2002)
Kommentar
Fra : Per Abrahamsen


Dato : 01-10-02 13:55

Byrial Jensen <bjensen@nospam.dk> writes:

> Mogens Hansen <mogens_h@dk-online.dk> skrev:
>> "James" <james@talent.dk> wrote in message
>>
>> Hvis man vil lære (Standard) C++ er man ubetinget bedre tjent med at anvende
>> noget andet end Microsoft Visual C++ V6.0.
>> Der er mange andre bedre bud, f.eks (nævn i tilfældig rækkefølge).
>> * gcc 3.1
>
> Et endnu bedre bud end den er gcc 3.2.
>
> Jeg oversætter jævnligt Mogens' gode eksempler på brug af C++.
> Gcc 2.9x har ikke altid kunnet klare dem, men jeg har ikke indtil
> nu oplevet problemer med gcc 3.1 og nyere.

GCC 2 havde et "før standard" bibliotek. Så længe man ikke brugte
standard biblioteket var det faktisk en ok C++ compiler, men uden
standard biblioteket er C++ et noget trist sprog.

Der er ikke de store forskelle i 3.x serien hvad angår C++ standarden,
nogen obskure fejl er blevet rettet. Den store forskel er at 3.1 kan
oversætte med en tålelig hastighed, det kunne 3.0 ikke.

3.2 burde faktisk hedde 3.1.1, men de rettede 2 ABI fejl så
objekt-filer oversat med 3.1 ikke altid kan linkes til filer oversat
med 3.2, og så var de nødt til at give den et nyt minor nummer.
Ellers er der kun rettet nogen småfejl, alle de "store" ændringer er
gemt til 3.3.

Men det ser ikke ud til at de to rigtig sjove ting der er under
udvikling når at komme med i 3.3, nemlig præ-compilerede headers der
skulle kunne give 6x hurtigere oversættelser på typisk kode, og en ny
C++ parser der skulle give hurtigere kompilering og bedre
fejlbeskeder.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste