• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed problem przy kompilacji programu w code blocks (c++)

Object Storage Arubacloud
0 głosów
1,607 wizyt
pytanie zadane 6 września 2015 w C i C++ przez bartolinciu Dyskutant (7,580 p.)
zamknięte 8 września 2015 przez bartolinciu
Podczas komilacji programu wyskoczyły mi następujące błędy:

d:\programy\codeblocks\mingw\lib\gcc\mingw32\4.8.1\include\stdarg.h                                                                 |98|error: expected initializer before 'typedef'|

d:\programy\codeblocks\mingw\include\winbase.h            |1538|error: 'va_list' has not been declared|

d:\programy\codeblocks\mingw\include\winbase.h            |1539|error: 'va_list' has not been declared|

d:\programy\codeblocks\mingw\include\winuser.h             |4150|error: 'va_list' has not been declared|

d:\programy\codeblocks\mingw\include\winuser.h             |4151|error: 'va_list' has not been declared|

próbowałem już reinstalować Code Blocs, ale to nic nie dało.

Dobra problem rozwiązany.

przyczyna-błąd składniowy (facepalm)

Dzięki wszystkim za pomoc.
komentarz zamknięcia: znaleziono rozwiązanie

5 odpowiedzi

+1 głos
odpowiedź 6 września 2015 przez Schizohatter Nałogowiec (39,600 p.)
Nie ma to jak nie podać kodu niedziałającego programu i oczekiwać pomocy <3
komentarz 6 września 2015 przez bartolinciu Dyskutant (7,580 p.)
Szczegół tkwi w tym, że problemy dotyczą plików kompilatora a nie mojego programu
0 głosów
odpowiedź 6 września 2015 przez WWOTEX Mądrala (6,200 p.)

Spróbuj:

#include <cstdarg>

 

komentarz 7 września 2015 przez bartolinciu Dyskutant (7,580 p.)
pomogło, ale za to wyskoczyły dwa nowe błędy:

d:\programy\codeblocks\mingw\include\wincon.h         |8|error: expected initializer before 'extern'|

d:\programy\codeblocks\mingw\include\wingdi.h          |1364|error: expected declaration before end of line|
0 głosów
odpowiedź 7 września 2015 przez criss Mędrzec (172,590 p.)

Wyrzyca ci error w 98 linii stdarg.h nt. typedef. Ja w tej linii nie mam typedefu, czyli różnią się. Spróbuj podmienić:

http://pastebin.com/p4AmDpsC

Tak troche desperacko, poza tym nigdy u siebie nie próbowałem tego używać, więc nie wiem czy u mnie jest ok. Ale czemu by nie spróbowac..

edit: chociaż kurde, ja mam 4.7.1, moze z tego wynika roznica...

 

0 głosów
odpowiedź 7 września 2015 przez bartolinciu Dyskutant (7,580 p.)

Jeśli kod ma jakieś znaczenie:

#include <iostream>
#include <windows.h>
#include "klasy i funkcje.h"
#include <fstream>

using namespace std;
char znak;
int main()
{
    User baza[liczenie()];

    for(;;)
    {
    cout<<"Masz juz konto?"<<endl<<"Y/N"<<endl;
    cin>>znak;
    if(znak=='N'||znak=='n')
    {
        rejestracja();
        break;
    }
    else if(znak=='Y'||znak=='y')
    {
        break;
    }
    else
    {
        cout<<"To nie jest odpowiedz!"<<endl;
        czyszczenie();
    }
    }
    for(;;)
    {
        if(logowanie(baza)==true)
        {
          for(;;)
          {
              if(po_zalogowaniu(baza)==true)
              {
                 break;
              }
          }
        }
    }

    return 0;
}
#include <iostream>
#include "klasy i funkcje.h"
#include <windows.h>
#include <fstream>
#include <cstdlib>
#include <conio.h>


using namespace std;

string linia,wyloguj="wyloguj",zmiana="zmien_dane",podany_login,podane_haslo,komenda;
int nr_linii=1,liczba=0,id,ile=0;
char wybor;
void czyszczenie()
{
        Sleep(2000);
        system("cls");
}
void rejestracja()
{
    fstream plik;
    plik.open("users.txt",ios::out|ios::app);
    cout<<"Wprowadź dane:"<<endl<<"login";
    cin>>podany_login;
    cout<<"haslo:";
    cin>>podane_haslo;
    plik<<podany_login<<endl<<podane_haslo<<endl;
    plik.close();
}
void zapisywanie(User *baza)
{
    ile=liczenie();
    fstream plik;
    plik.open("users.txt",ios::out);
    plik<<baza[0].login<<endl;
    plik<<baza[0].haslo<<endl;
    plik.close();
    plik.open("users.txt",ios::out|ios::app);
    for(int i=1;i<ile;i++)
    {
        plik<<baza[i].login<<endl<<baza[i].haslo<<endl;
    }
    plik.close();
}
void zmiana_danych(User *baza)
{
    cout<<"Które dane chcesz zmienić?"<<endl<<"1.Login"<<endl<<"2.Haslo";
        wybor=getch();

    switch(wybor)
    {
    case '1': zmiana_loginu(baza);  break;
    case '2': zmiana_hasla(baza);   break;
    default: cout<<endl<<"Nie ma takiej opcji w menu!";
    }
    getchar();getchar();
    zapisywanie(baza);
}
void zmiana_loginu(User *baza)
{
         cout<<"Podaj haslo: ";
        cin>>podane_haslo;
        if (podane_haslo==baza[id].haslo)
        {
            cout<<endl<<"Podaj nowy login: ";
            cin>>baza[id].login;
            cout<<"login zmieniony";
        }
        else
        {
            cout<<"bledne haslo";
        }
        czyszczenie();
}
void zmiana_hasla(User *baza)
{
     cout<<"Podaj stare haslo: ";
        cin>>podane_haslo;
        if (podane_haslo==baza[id].haslo)
        {
            cout<<endl<<"Podaj nowe haslo: ";
            cin>>baza[id].haslo;
            cout<<"haslo zmienione";
        }
        else
        {
            cout<<"bledne haslo";
        }
        czyszczenie();
}
bool po_zalogowaniu(User *baza)
 {
    cout<<endl<<">";
    cin>>komenda;
    if (komenda==zmiana)
    {
        zmiana_danych(baza);
        return false;
    }
    else if (komenda==wyloguj)
    {
        czyszczenie();
        return true;
    }
    else if (komenda=="pomoc")
    {
        cout<<"zmiana_danych - pozwala zmienic dane konta"
        <<endl<<"stop - kończy pracę programu"
        <<endl<<"wyloguj - wylogowuje użytkownika";
        return false;
    }
    else if (komenda=="stop")
        {
            exit(0);
        }
    else
    {
        cout<<"nie ma takiej komendy"<<endl;
        return false;
    }
}
void wczytywanie(User *baza)
{
    int nr_usera=0;
    fstream plik;
    plik.open("users.txt",ios::in);
    while(getline(plik,linia))
    {
        switch(nr_linii)
        {
            case 1: baza[nr_usera].login = linia;    break;
            case 2: baza[nr_usera].haslo = linia;    break;
        }

        if (nr_linii==2) {nr_linii=0; nr_usera++;}
        nr_linii++;
    }
    plik.close();
}
int liczenie()
{
    fstream plik;
    plik.open("users.txt",ios::in);
    while(getline(plik,linia))
    {
        liczba++;
    }
    plik.close();
    return liczba/2;
}
bool logowanie(User *baza)
{
    wczytywanie(baza);
    cout<<"Podaj login: ";
    cin>>podany_login;
    for(int i=0;i<liczba;i++)
    {
        if(baza[i].login==podany_login)
        {
            id=i;
            break;
        }
        else if(i==liczba-1&&baza[i].login!=podany_login)
        {
            cout<<"Nie ma cie w bazie danych";
            czyszczenie();
            return false;
        }
    }
    cout<<"Podaj haslo: ";
    cin>>podane_haslo;
    if(podane_haslo==baza[id].haslo)
    {
        czyszczenie();
        return true;
    }
    else
    {
        cout<<"bledne haslo";
        czyszczenie();
        return false;
    }
}
User::User(string l,string h)
{
    login=l;
    haslo=h;
}
#include <iostream>


using namespace std;
void czyszczenie();
void rejestracja();
int liczenie();

class User
{
    public:
    string login,haslo;
    User(string="login",string="haslo");
};
bool logowanie(User*);
void wczytywanie(User*);
bool po_zalogowaniu(User*);
void zmiana_danych(User*);
void zmiana_loginu(User*);
void zmiana_hasla(User*);
void zapisywanie(User*)

 

komentarz 8 września 2015 przez WWOTEX Mądrala (6,200 p.)
wydaje mi się że masz błąd składni w 21 linijce ostatniego kodu... czy nie warto by dodać średnika?
0 głosów
odpowiedź 7 września 2015 przez bartolinciu Dyskutant (7,580 p.)
Dobra poprzednie problemy rozwiązało dodanie biblioteki windows.h do wszystkich plików,ale utworzył się jeszcze jeden: d:\programy\codeblocks\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\codecvt.h |41|error: expected initializer before 'namespace'|
komentarz 8 września 2015 przez WWOTEX Mądrala (6,200 p.)

expected initializer before 'namespace' oznacza że masz gdzieś prawdopodobnie jakiś błąd składniowy a ja taki zauważyłem np. w 3 kodzie 21 linijce

komentarz 8 września 2015 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Proszę cię, edytuj swoje pytanie zamiast dodawać kolejne odpowiedzi, tak zachowamy jakiś porządek i nie będzie bajzlu :)

Podobne pytania

+1 głos
4 odpowiedzi 1,465 wizyt
pytanie zadane 17 października 2015 w C i C++ przez Michał Gibas Pasjonat (19,610 p.)
0 głosów
3 odpowiedzi 1,244 wizyt
0 głosów
4 odpowiedzi 8,530 wizyt
pytanie zadane 18 października 2016 w C i C++ przez MarioMZ Nowicjusz (170 p.)

92,579 zapytań

141,431 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...