[C++ Builder 6 + ANSI C] = Fouten!?

Pagina: 1
Acties:

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 27-11 13:59
Hallo,

Ik ben bezig met een C projectje, en ben erachter gekomen nadat ik wat code erin gegooit had dat mijn Borland C++ Builder 6 op Borland C staat, en ik heb liever dat hij op ANSI C staat. Dus heb ik dit via de instellingen veranderd, maar bij compilen krijg ik nu allemaal compile errors in de standaard library's:
(ik heb de fouten + code waarin ze ongeveer optreden opgeschreven)
[C++ Error] winreg.h(88): E2257 , expected
[C++ Error] winreg.h(91): E2257 , expected
[C++ Error] winreg.h(95): E2238 Multiple declaration for 'provider_info::PQUERYHANDLER'
C:
1
2
3
4
5
6
7
8
typedef struct provider_info {
    PQUERYHANDLER pi_R0_1val;
    PQUERYHANDLER pi_R0_allvals;
    PQUERYHANDLER pi_R3_1val;
    PQUERYHANDLER pi_R3_allvals;
    DWORD pi_flags;    // capability flags (none defined yet).
    LPVOID pi_key_context;
}REG_PROVIDER;


[C++ Error] dstring.h(161): E2034 Cannot convert 'const char *' to 'char *'
C:
1
2
    // C string operator
    char* __fastcall c_str() const        { return (Data)? Data: "";}

[C++ Error] systobj.h(381): E2108 Improper use of typedef 'TAggregatedObject'
[C++ Error] systobj.h(402): E2108 Improper use of typedef 'TContainedObject'
C:
1
2
3
4
5
6
       #if sizeof(TAggregatedObject) > 8
       #pragma message "Pascal/C++ size mismatch on TAggregatedObject."
       #endif
       #pragma pack(pop)

       class DELPHICLASS TContainedObject;


Weet iemand waardoor dit komt en hoe ik het zo goed mogelijk kan oplossen?
in borland c compileert ie netjes en geeft geen fouten of niets, in ANSI C wel

Mess with the best, die like the rest


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 07:20

.oisyn

Moderator Devschuur®

Demotivational Speaker

De standaard headers zijn niet strict ISO C compatible, tough luck :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 27-11 13:59
en dat betekend :P? hoe kan ik het oplossen (als er een oplossing mogelijk is die niet vereist dat ik mijn complete applicatie van scratch moet opbouwen)

[ Voor 32% gewijzigd door ThaStealth op 19-04-2007 00:00 ]

Mess with the best, die like the rest


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 07:20

.oisyn

Moderator Devschuur®

Demotivational Speaker

De problemen hebben niets met jouw code te maken. Het punt is gewoon dat de standaard windows headers zich niet helemaal aan de C(++) standaard houden, en dat je die code dus niet kan compileren met stricte standaard regels. Je zou de standaard headers aan kunnen passen zodat het wel compileert (voor zover dat mogelijk is), maar dat is mijns inziens onbegonnen werk :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 27-11 13:59
Oke! goed dat te weten :) waardeloos dat ze zich er niet aan houden wel... maarja, blij dat het opgelost is (dacht al dat ik mijn compelte projectje weg kon pleuren en opnieuw moest beginnen)

Mess with the best, die like the rest


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 07:20

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dat ze zich er niet aan houden heeft twee redenen:
  1. De meeste headers zijn ouder dan 1998, en de C++ standaard is pas in dat jaar officieel geformuleerd. De nieuwere compilers zijn nog wel enigszins compatible met oude code, en dus hoeften de headers niet aangepast te worden
  2. Vrijwel alle compilers bevatten extensies op de taal, omdat deze tekort schiet op bepaalde gebieden. Zo definieert C++ bijvoorbeeld geen calling conventies (__stdcall, __fastcall, __cdecl), terwijl deze wel nodig zijn om de API voor meerdere talen beschikbaar te maken.
Een opmerking als "waardeloos dat ze zich er niet aan houden" is dus een beetje kort door de bocht gezien punt 2 :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 27-11 13:59
Aha oke :) maar als het toch (niet lekker iig door die 2 punten) werkt waarom biedt Borland dan de mogelijkheid om em als ANSI C te compileren??

Mess with the best, die like the rest


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 07:20

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je hoeft toch niet per se de platform API te includen? Je kan er prima compliant ISO C(++) apps mee compilen (voor zover de compiler verder compliant is overigens).

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1