Dziwny błąd przy podziale projektu na pliki

0

Podczas próbu podzielenia mojego projektu na pliki otrzymałem w wielu miejscach komunikat

expected '=', ',', ';', 'asm' or 'attribute' before '{' token

problem w tym,że wszystko robie według tutoriala

i wszystko jest tak jak być powinno według niego.Siedze już nad tym którąś godzine i naprawde nie moge rozgryźć,o co chodzi.Przedstawiam fragment kodu,który generuje błąd

#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "decode.h"
void ReadKeyList(struct keyElem* guard,FILE* plik)
{                                                                                    //dokładnie tutaj wywala błąd
    char tempTab[1];
    struct keyElem* temp = CreateKeyElem(tempTab,'_');

    rewind(plik);

    while(1)
    {
        fread(temp,sizeof(struct keyElem),1,plik);
        if(feof(plik)!=0)break;
        CreateKey(guard,temp->key,temp->data);
    }

    free(temp);
}

Ktoś może rozumie, dlaczego tak sie dzieje?

0

Tak chyba nie wolno deklarować parametrów..

zamiast tak:

void ReadKeyList(struct keyElem* guard,FILE* plik)

spróbuj napisać tak:

void ReadKeyList(keyElem* guard,FILE* plik)

keyElem jest tu strukturą definiowaną tak:

struct keyElem
{
  ...
};
0

@Flaming: jak najbardziej możliwe jest budowanie listy parametrów w taki sposób.

@Grunding: ten fragment wygląda ok, błąd będziesz miał w którymś z plików nagłówkowych.
Pamiętaj, że include działa w C praktycznie tak samo jak copy-paste, więc jeśli w masz jakiś niedomknięty nawias w decode.h, przejdzie on do Twojego głównego pliku.

2
flaming napisał(a):

Tak chyba nie wolno deklarować parametrów..

zamiast tak:

void ReadKeyList(struct keyElem* guard,FILE* plik)

spróbuj napisać tak:

void ReadKeyList(keyElem* guard,FILE* plik)

keyElem jest tu strukturą definiowaną tak:

struct keyElem
{
  ...
};

Ty kiedyś pisałeś w C? Nie w C++?

Jak zrobisz struct S {}; to potem trzeba pisać struct S, samo S nie wystarczy.
Żeby móc pisać samo S, trzeba by było zrobić typedef struct {} S;.

0

Ok ten problem mam już z głowy.Faktycznie był to jakiś błąd składniowy.Jednak teraz zaczęło robić sie poważniej.Podczas próby kompilacji wywala mi komunikat

C:\Users\2\AppData\Local\Temp\cc2kr7gy.o:main.c:(.text+0x6c): undefined reference to EncryptFile' C:\Users\2\AppData\Local\Temp\cc2kr7gy.o:main.c:(.text+0x9a): undefined reference to DecodeFile'
collect2.exe: error: ld returned 1 exit status

Żadnej informacji o linijce.Nic.Dla zainteresowanych zamieszczam plik.

0

a jak kompilujesz? nie ma makefile, ani nic podobnego. Jaki kompilator? Robisz projekt? Czy kompilujesz obiekty main i Cproj, a potem linkujesz? bo u mnie tak kompiluje bezproblemowo

1 użytkowników online, w tym zalogowanych: 0, gości: 1