|
| [BC5] Mærkelig compiler warning Fra : Thomas L. Christense~ |
Dato : 22-02-02 21:52 |
|
Hej
Jeg er ret ny udi Borland C++ 5.0, så jeg har lidt problemer med
at finde ud af hvad der sker. Jeg sidder her med noget kode, hvor
en struct bliver defineret og tildelt værdier sådan her:
struct
{
int iIndex ;
TCHAR * szLabel ;
TCHAR * szDesc ;
}
sysmetrics [] =
{
SM_CXSCREEN, TEXT ("SM_CXSCREEN"),
TEXT ("Screen width in pixels"),
SM_CYSCREEN, TEXT ("SM_CYSCREEN"),
TEXT ("Screen height in pixels"),
/* ... */
}
.... og det giver følgende warning:
[blah blah] Initialization is only partially bracketed
Yes. I hjælpen kan jeg om den her warning læse at
"(Command-line option to display warning: -wpin)
When structures are initialized, braces can be used to mark the
initialization of each member of the structure.
If a member itself is an array or structure, nested pairs of
braces can be used.
This ensures that the compiler's idea and your idea of what value
goes with which member are the same.
When some of the optional braces are omitted, the compiler issues
this warning.
Choose Options|Project|Messages|ANSI Violations to control the
display of this warning from the IDE.
Default = Off"
Default = Off? Hvorfor hulen får jeg så den warning? Hmm... Mon
den så skal være true for at den *ikke* bliver vist? Nope! Den
bliver vist uanset hvad! Gør jeg et eller andet forkert?
Jeg kan selvfølgelig sætte "braces" (hvad hedder sådan nogle
fætre på dansk?) om de enkelte medlemmer, men det er der jo ikke
meget "optional" over, og jeg vil egentlig også hellere lære BC5
at lade være med at brokke sig over at de mangler. Kan man det?
Nogen der har et bud på hvad der er galt?
--
Med venlig hilsen
Thomas L. Christensen, Svendborg
| |
Ivan Johansen (22-02-2002)
| Kommentar Fra : Ivan Johansen |
Dato : 22-02-02 23:34 |
|
Thomas L. Christensen wrote:
> Hej
>
> Jeg er ret ny udi Borland C++ 5.0, så jeg har lidt problemer med
> at finde ud af hvad der sker.
Jeg kender ikke rigtigt Borland C++ 5. Det er et meget gammelt program.
> Jeg kan selvfølgelig sætte "braces" (hvad hedder sådan nogle
> fætre på dansk?) om de enkelte medlemmer, men det er der jo ikke
> meget "optional" over, og jeg vil egentlig også hellere lære BC5
> at lade være med at brokke sig over at de mangler. Kan man det?
> Nogen der har et bud på hvad der er galt?
I Borland C++ Builder 5 (BCB5) kan man under options vælge hvilke
warnings man vil have vist. Jeg er sikker på at det også findes i den
gamle BC5.
Ivan Johansen
| |
Mogens Hansen (23-02-2002)
| Kommentar Fra : Mogens Hansen |
Dato : 23-02-02 00:18 |
|
"Thomas L. Christensen" <tlc@get2net.dk> wrote in message
>
> struct
> {
> int iIndex ;
> TCHAR * szLabel ;
> TCHAR * szDesc ;
> }
> sysmetrics [] =
> {
> SM_CXSCREEN, TEXT ("SM_CXSCREEN"),
> TEXT ("Screen width in pixels"),
> SM_CYSCREEN, TEXT ("SM_CYSCREEN"),
> TEXT ("Screen height in pixels"),
> /* ... */
> }
>
Petzold har ikke levet forgæves. SYSMETS.H
Det er en udemærket bog, men der er ikke nogen der siger at det ikke kan
gøres bedre.
Du er ved at lave et array af strukturer.
Prøv at sættes brackets omkring hvert element i arrayet:
struct
{
int iIndex ;
TCHAR * szLabel ;
TCHAR * szDesc ;
}
sysmetrics [] =
{
{ SM_CXSCREEN, TEXT ("SM_CXSCREEN"), TEXT ("Screen width in
xels") },
{ SM_CYSCREEN, TEXT ("SM_CYSCREEN"), TEXT ("Screen height in pixels") }
} ;
>
> Default = Off? Hvorfor hulen får jeg så den warning? Hmm... Mon
> den så skal være true for at den *ikke* bliver vist? Nope! Den
> bliver vist uanset hvad! Gør jeg et eller andet forkert?
>
Alle warnings er sikker slået til - det er default, og almindeligvis meget
fornuftigt.
Man bør være _sikker_ på at man ikke har brug for den pågældende warning, så
man ikke bare slår den fra i afmagt.
Som regel er det at opfatte som en hjælp fra en erfaren programmør.
Vælg "Options | Project" for at åbne option dialogen.
På yderste niveau i "Messages" er der 3 radiobuttons i gruppen "Message
Set":
* All
* Selected
* None
Når "All" (og "None") er valgt, er det ligegyldigt hvad der er valgt på det
mere detaljerede niveau.
Når "Selected" er valgt er de underliggende valgt gyldige.
Pas i øvrigt på ikke at blive forvirret over "local node override" - det er
kompliceret men nødvendig.
Venlig hilsen
Mogens Hansen
| |
Thomas L. Christense~ (23-02-2002)
| Kommentar Fra : Thomas L. Christense~ |
Dato : 23-02-02 06:45 |
|
"Mogens Hansen" <mogens_h@dk-online.dk> wrote:
>Petzold har ikke levet forgæves. SYSMETS.H
Meget godt genkendt...
>Det er en udemærket bog, men der er ikke nogen der siger at det ikke kan
>gøres bedre.
Hvad tænker du på? Findes der bedre bøger om Win32 API? Eller
synes du bare det er lidt håbløst at skrive i C, når man nu der
findes MFC og OOP?
>På yderste niveau i "Messages" er der 3 radiobuttons i gruppen "Message
>Set":
> * All
> * Selected
> * None
Yes! Her var synderen.
>Pas i øvrigt på ikke at blive forvirret over "local node override"
Hmm... Det må jeg hellere kigg på også. Tak for hjælpen.
--
Med venlig hilsen
Thomas L. Christensen, Svendborg
| |
Mogens Hansen (23-02-2002)
| Kommentar Fra : Mogens Hansen |
Dato : 23-02-02 08:11 |
|
"Thomas L. Christensen" <tlc@get2net.dk> wrote
> "Mogens Hansen" <mogens_h@dk-online.dk> wrote:
>
> >Det er en udemærket bog, men der er ikke nogen der siger at det ikke kan
> >gøres bedre.
>
> Hvad tænker du på? Findes der bedre bøger om Win32 API? Eller
> synes du bare det er lidt håbløst at skrive i C, når man nu der
> findes MFC og OOP?
>
Nej, jeg mener blot at jeg foretrækker at have de ekstra backets i
initialiseringen af arrayet af strukturer.
Jeg syntes det gør koden tydeligere, og hvis det samtidig fjerner warnings
syntes jeg at det er en forbedring.
Petzold er den bedste bog om Win32 API som jeg kender. Jeg brugte den i sin
tid til at lære Windows 3.0 programmering, og jeg købte Fith Edition for
nyligt.
Om det er håbløst at skrive direkte til Win32 API i C er en helt anden snak,
og så kategorisk vil jeg slet ikke sige det.
Det samme gælder brugen af en forholdsvis gammel compiler (Vær sikker på at
bruge V5.02 - den er væsentligt bedre end V5.0 og V5.01 som begge var alt
for ustabile).
Venlig hilsen
Mogens Hansen
| |
Thomas L. Christense~ (23-02-2002)
| Kommentar Fra : Thomas L. Christense~ |
Dato : 23-02-02 13:07 |
|
"Mogens Hansen" <mogens_h@dk-online.dk> wrote:
>> Hvad tænker du på? Findes der bedre bøger om Win32 API? Eller
>> synes du bare det er lidt håbløst at skrive i C, når man nu der
>> findes MFC og OOP?
>
>Nej, jeg mener blot at jeg foretrækker at have de ekstra backets i
>initialiseringen af arrayet af strukturer.
Hmm.. Ja, det tror jeg egentlig også jeg gør...
>(Vær sikker på at
>bruge V5.02 - den er væsentligt bedre end V5.0 og V5.01 som begge var alt
>for ustabile).
>
>
Ja, hehe, jeg kører selvfølgelig med 5.0. Hvordan opgraderer man?
Jeg har lige været forbi Borlands hjemmeside, men fandt ikke lige
noget der fortalte om hvordan man opgraderer. Det eneste jeg
fandt var
http://www.borland.com/devsupport/borlandcpp/patches.html
som kun ændrer 5.0 til 5.0B.
Men, som det er blevet sagt, det er jo en ældre sag efterhånden.
Jeg tror faktisk jeg vil investere i MVC++6.0 std. Den koster
ikke alverden - og så får jeg også en lidt mere up-to-date
API-reference...
--
Med venlig hilsen
Thomas L. Christensen, Svendborg
| |
Thomas L. Christense~ (23-02-2002)
| Kommentar Fra : Thomas L. Christense~ |
Dato : 23-02-02 13:28 |
|
Thomas L. Christensen <tlc@get2net.dk> wrote:
>Jeg har lige været forbi Borlands hjemmeside, men fandt ikke lige
>noget der fortalte om hvordan man opgraderer. Det eneste jeg
>fandt var
>
> http://www.borland.com/devsupport/borlandcpp/patches.html
....og hvis jeg havde kigget lidt bedre efter, så havde jeg set,
at under Borland C++ 5.01står der
"U.S. customers can order Borland C++ 5.02 by calling
1-800-932-9994. Outside the U.S., please contact your local
Borland office. Borland C++ 5.02 contains all the fixes from the
patches below, plus other fixes as well. "
Okay, nogen her der tilfældigvis ved hvem mit "local Borland
office" er? Importøren?
--
Med venlig hilsen
Thomas L. Christensen, Svendborg
| |
Mogens Hansen (23-02-2002)
| Kommentar Fra : Mogens Hansen |
Dato : 23-02-02 14:24 |
|
"Thomas L. Christensen" <tlc@get2net.dk> wrote in message
news:np0f7usbtj9o1v7qa4ehpfr9etdtncb7rn@news.get2net.dk...
> Men, som det er blevet sagt, det er jo en ældre sag efterhånden.
> Jeg tror faktisk jeg vil investere i MVC++6.0 std.
Jeg tror ikke at den findes mere, nu da Visual Studio .NET er frigivet.
Visual C++ .NET har iøvrigt en langt bedre C++ implementering end Visual C++
V6.0, hvis det spiller en rolle.
Visual C++ .NET ikke som en selvstændig pakke, men er del af Visual Studio
..NET Professional 2002.
Se f.eks.
http://www.ravenholm.dk/docs/software.asp?productID=2145226460
for eksempler på prisen
Venlig hilsen
Mogens Hansen
| |
Mogens Hansen (23-02-2002)
| Kommentar Fra : Mogens Hansen |
Dato : 23-02-02 14:30 |
|
"Mogens Hansen" <mogens_h@dk-online.dk> wrote in message
news:a5853m$31l$1@news.cybercity.dk...
> Visual C++ .NET ikke som en selvstændig pakke, men er del af Visual Studio
> .NET Professional 2002.
hmm. jo den gør tilsyneladende, og den koster kr. 941. Jeg kunne bare ikke
se det på Microsoft hjemmeside.
Venlig hilsen
Mogens Hansen
| |
Jonas Meyer Rasmusse~ (25-02-2002)
| Kommentar Fra : Jonas Meyer Rasmusse~ |
Dato : 25-02-02 16:12 |
|
"Mogens Hansen" <mogens_h@dk-online.dk> wrote in message
news:a585ej$3n7$1@news.cybercity.dk...
>
> "Mogens Hansen" <mogens_h@dk-online.dk> wrote in message
> news:a5853m$31l$1@news.cybercity.dk...
>
> > Visual C++ .NET ikke som en selvstændig pakke, men er del af Visual
Studio
> > .NET Professional 2002.
>
> hmm. jo den gør tilsyneladende, og den koster kr. 941. Jeg kunne bare ikke
> se det på Microsoft hjemmeside.
Er det korrekt at standard ikke optimerer koden?
Og er det så også korrekt, at den eneste metode til at få en kommerciel
version
af den optimerende er ved at hoste op med ca 9k?
mvh Jonas
| |
|
|