C goeroe's opgelet, een weird probleem...

Pagina: 1
Acties:
  • 117 views sinds 30-01-2008
  • Reageer

  • scorpionv
  • Registratie: Juni 2000
  • Laatst online: 17:49

scorpionv

This space for rent

Topicstarter
Ik ben weer eens aan het coden geslagen, en wel in Bloodshed Dev C++ 4. Voorheen gebruikte ik altijd een DOS compiler, BorlandC++ 3.51 ofzo.
Nu wil ik in mijn programma in een directory zoeken, met findfirst etc. Dan moet je een struct declareren, die findfirst vervolgens voor je vult.

Dus:

#include <stdio.h>
#include <dir.h>

int main(void)
{
struct ffblk ffblk;
blaaaaaaat...
findfirst(................
}

Zodra ik in de Dev C++ 4 Compiler dit gedoe laat compileren geeft hij een foutmelding op de dikgedrukte regel:"aggregate `struct ffblk ffblk' has incomplete type and cannot be initialized". :'(
Ik kan dus niet vinden waar de fout inzit, en mijn oude compiler ook niet! Die 'doet' het gewoon :?
Hebben jullie enig idee waar dit aan kan liggen? Is dit een bug in de Dev C++ compiler, of is het een fout van mij?

Bedankt!

Fun while it lasted: World Community Grid!


  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

wat is Bloodshed Dev C++ 4 ?

  • scorpionv
  • Registratie: Juni 2000
  • Laatst online: 17:49

scorpionv

This space for rent

Topicstarter
Een "Free Integrated Development Environment for the C/C++ Mingw compiler." volgens hun site >:)

www.bloodshed.net/devcpp.html

Ik zie het als een leuk(GUI) alternatief voor de DOS-compilers, en het is niet zo duur/groot enz. als Visual C++ oid.

[edit]
Ik zie net dat Dev C++ deze: www.mingw.org/ compiler gebruikt. Dan zal die hoogstwaarschijnlijk het probleem veroorzaken, maar wat in vredesnaam het probleem is??

Fun while it lasted: World Community Grid!


  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Visual C wordt meer gebruikt in de markt, dus ik denk dat je meer hebt aan de ervaring die je meteen al kan opdoen in visual c++, if u ask me :)

maar ff ontopic: ik zou het zo niet weten, sorrow.

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Zo op het eerste gezicht vereist deze compiler gewoon dat je struct gedefinieerd is.
dus iets als
typedef struct gfidn{
int var;
} gfidn

ik denk dat de andere compiler wat losser is, wat imho fout is (maarja, ik doen dan ook c++)

  • scorpionv
  • Registratie: Juni 2000
  • Laatst online: 17:49

scorpionv

This space for rent

Topicstarter
Het is wel zo dat VC++ meer wordt gebruikt, maar het is natuurlijk wel zo dat de taal evengoed te leren is in bijvoorbeeld Dev C++. En Microsoft kennende kan ik bij de volgende versie van VC++ weer beginnen met leren hoe de GUI nu weer werkt. >:)
Maar iig bedankt voor de moeite. Andere meningen/suggesties?

Fun while it lasted: World Community Grid!


  • scorpionv
  • Registratie: Juni 2000
  • Laatst online: 17:49

scorpionv

This space for rent

Topicstarter
Ja, dat vereist uiteraard elke compiler, maar in de include-file <dir.h> staat die structure al gedefinieerd. Dus lijkt me overbodig om het nog eens te doen.
Maar ik ga het nu proberen.
Bedankt alvast!

Fun while it lasted: World Community Grid!


  • scorpionv
  • Registratie: Juni 2000
  • Laatst online: 17:49

scorpionv

This space for rent

Topicstarter
Nu krijg ik weer een andere melding :? :
implicit declaration of function `int findfirst(...)'

Hij vind blijkbaar de struct nu okay, maar de manier waarop findfirst hem gebruikt niet.

Stucture

struct ffblk
{
char ff_reserved[21]; /* reserved by DOS */
char ff_attrib; /* attribute found */
int ff_ftime; /* file time */
int ff_fdate; /* file date */
long ff_fsize; /* file size */
char ff_name[13]; /* found file name */
} ffblk;


Gebruik structure

result = findfirst(tempLogdir,&ffblk,0);

Fun while it lasted: World Community Grid!


  • Orphix
  • Registratie: Februari 2000
  • Niet online
oh god, is ffblk werkelijk een struct?! heb altijd zo'n hekel aan nikszeggende namen (dacht dat je het zelf verzonnen had)

maar ik geloof dat de compiler je include bestanden niet kan vinden ??
implicit declaration betekent iig dat de functie nog niet bestaat, maar je maakt er wel gebruik van. Misschien zitten de include's in een subdirectory oid. Je compiler hoort wel een fout te geven als die het niet kan vinden ...

  • Rowwan
  • Registratie: November 2000
  • Laatst online: 21:16
Ik weet het niet zeker, maar mag je wel dezelfde naam gebruiken?

struct a
{} a;

probeer eens:

struct a
{} b;

  • decoy
  • Registratie: November 1999
  • Laatst online: 13-01-2018
ctrl-C, ctrl-V


#include <stdio.h>
#include <dir.h>

int main(void)
{
struct ffblk ffblk;
int done;
printf("Directory listing of *.*\n");
done = findfirst("*.*",&ffblk,0);
while (!done)
{
printf(" %s\n", ffblk.ff_name);
done = findnext(&ffblk);
}

return 0;
}

edit=> Je eerste argument moet een filenaam zijn, dus let op de tmplogdir (ofzo)

  • scorpionv
  • Registratie: Juni 2000
  • Laatst online: 17:49

scorpionv

This space for rent

Topicstarter
Op donderdag 22 februari 2001 15:24 schreef Orphix het volgende:
oh god, is ffblk werkelijk een struct?! heb altijd zo'n hekel aan nikszeggende namen (dacht dat je het zelf verzonnen had)

maar ik geloof dat de compiler je include bestanden niet kan vinden ??
implicit declaration betekent iig dat de functie nog niet bestaat, maar je maakt er wel gebruik van. Misschien zitten de include's in een subdirectory oid. Je compiler hoort wel een fout te geven als die het niet kan vinden ...
Is een voorgedefinieerde struct idd, dus ik verzin de namen niet :).

Maar met die include-dir zou je weleens gelijk kunnen hebben, ik ben wat aan het schuiven met include-files op dit moment.
I'll keep ya informed!

Fun while it lasted: World Community Grid!


  • scorpionv
  • Registratie: Juni 2000
  • Laatst online: 17:49

scorpionv

This space for rent

Topicstarter
Op donderdag 22 februari 2001 15:44 schreef Rowwan het volgende:
Ik weet het niet zeker, maar mag je wel dezelfde naam gebruiken?

struct a
{} a;

probeer eens:

struct a
{} b;
Is niet het probleem, toch bedankt! :)

Fun while it lasted: World Community Grid!


  • scorpionv
  • Registratie: Juni 2000
  • Laatst online: 17:49

scorpionv

This space for rent

Topicstarter
Op donderdag 22 februari 2001 16:05 schreef decoy het volgende:
ctrl-C, ctrl-V


#include <stdio.h>
#include <dir.h>

int main(void)
{
struct ffblk ffblk;
int done;
printf("Directory listing of *.*\n");
done = findfirst("*.*",&ffblk,0);
while (!done)
{
printf(" %s\n", ffblk.ff_name);
done = findnext(&ffblk);
}

return 0;
}
Dat dacht ik ook, maar dit werkt dus ECHT NIET met die compiler.

Fun while it lasted: World Community Grid!


  • decoy
  • Registratie: November 1999
  • Laatst online: 13-01-2018
Op donderdag 22 februari 2001 16:08 schreef scorpionv het volgende:

[..]

Dat dacht ik ook, maar dit werkt dus ECHT NIET met die compiler.
Bovenstaande is afkomstig van de borland help-file, trek die maar weer uit de kast dan!

  • scorpionv
  • Registratie: Juni 2000
  • Laatst online: 17:49

scorpionv

This space for rent

Topicstarter
Op donderdag 22 februari 2001 16:12 schreef decoy het volgende:

[..]

Bovenstaande is afkomstig van de borland help-file, trek die maar weer uit de kast dan!
Ik weet het, maar de hele grap is nu net dat ik de Borland Compiler dus niet gebruik. En de Borland Help staat hier ook open, die roult nog steeds, maar ik heb genoeg van de DOS-interface.
Blijkbaar heeft Borland andere includefiles dan de MingW compiler die Dev C++ gebruikt.

Fun while it lasted: World Community Grid!


  • decoy
  • Registratie: November 1999
  • Laatst online: 13-01-2018
De compiler bedoel ik....

  • scorpionv
  • Registratie: Juni 2000
  • Laatst online: 17:49

scorpionv

This space for rent

Topicstarter
Ow, de compiler... Ja, dat zal bijna weer moeten, maar ik vind het belachelijk dat C (meest portable taal, hebben ze me op school wijsgemaakt) niet eens op verschillende compilers werkt. C roult, maar de verschillende producenten van compilers zouden hun handen ineen moeten slaan, en zo dus compatible producten neer moeten zetten. :(

Fun while it lasted: World Community Grid!


Verwijderd

Op donderdag 22 februari 2001 16:05 schreef decoy het volgende:
ctrl-C, ctrl-V


#include <stdio.h>
#include <dir.h>

int main(void)
{
struct ffblk ffblk;
int done;
printf("Directory listing of *.*\n");
done = findfirst("*.*",&ffblk,0);
while (!done)
{
printf(" %s\n", ffblk.ff_name);
done = findnext(&ffblk);
}

return 0;
}

edit=> Je eerste argument moet een filenaam zijn, dus let op de tmplogdir (ofzo)
vergeet niet de findclose

  • prutsger
  • Registratie: Oktober 2001
  • Laatst online: 14-09 15:22
Als het om C++ gaat, zet dan niet in de topictitel C. Dat is een wezenlijk verschil. Ben ik druk aan het zoeken naar C topics, de helft die ik open gaat over C++. Is dus niet persoonlijk voor dit topic bedoelt, maar ook voor andere, wordt het een beetje zat zo... Geef gewoon ff duidelijk aan om welke taal het gaat!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

grover waar heb je het over, dit gaat over C!

maar om dit ook nog een nuttige post te laten zijn: volgens mij zit het m in het feit dat je een variabele declareert met de naam van de struct

doe eens
code:
1
struct ffblk blaat;

(en natuurlijk de andere statements waar je ffblk gebruikt veranderen in blaat)

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.


  • prutsger
  • Registratie: Oktober 2001
  • Laatst online: 14-09 15:22
Bekijk de posts nog eens goed, overal staat C++...

Maar laat maar, ik hou me mond wel en ik ga wel lekker verder zoeken...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

blijkbaar lees jij niet goed, want er staat alleen C++ bij de compilers die genoemd worden (VC++, Dev C++), dat heeft nix te maken met het feit dat ie hier een C-proggie aan het coden is, aangezien c++ distributies over het algemeen ook wel c kunnen compilen

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.


  • prutsger
  • Registratie: Oktober 2001
  • Laatst online: 14-09 15:22
Oke oke dat geef ik toe... mijn fout. |:(
En dit gaat wel heel erg off-topic nu dus voordat er een slotje op komt, :z

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 23:11
Op donderdag 22 februari 2001 14:40 schreef scorpionv het volgende:
Ik ben weer eens aan het coden geslagen, en wel in Bloodshed Dev C++ 4. Voorheen gebruikte ik altijd een DOS compiler, BorlandC++ 3.51 ofzo.
Nu wil ik in mijn programma in een directory zoeken, met findfirst etc. Dan moet je een struct declareren, die findfirst vervolgens voor je vult.
Wat je nodig hebt voor directories varieert per platform/compiler. findfirst() is geen standaard C.
Dus:

#include <stdio.h>
#include <dir.h>

int main(void)
{
struct ffblk ffblk;
blaaaaaaat...
findfirst(................
}

Zodra ik in de Dev C++ 4 Compiler dit gedoe laat compileren geeft hij een foutmelding op de dikgedrukte regel:"aggregate `struct ffblk ffblk' has incomplete type and cannot be initialized". :'(
't Is een beetje obscuur, maar in C mogen structs en objecten dezelfde naam hebben, dus dat is Ok.
De error betekent dat nergens iets staat als
code:
1
2
3
4
 struct ffblk {
_type1 _member1;
_type2 _member2;
};

Blijkbaar stond dat in je oude dir.h header, en niet in je nieuwe. Geen bug, is een lack of feature.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1