Błędy przy kopilacji.

Błędy przy kopilacji.
BL
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:9
0

Witam ostatnio zaczełem pisać programik nie mój z Thinking in C, było w kodzie kilka błędów ale je wyeliminowałem. Po nich pojawił się inny czy może ktoś powiedzieć oco kaman? [compiler Dev-C++]

In function main': [Linker error] C:\MinGW\msys\1.0\src\mingwrt/../mingw/main.c:73: undefined reference to WinMain@16'
collect2: ld returned 1 exit status

Kopiuj
 
typedef struct CStashTag{
	int size;
	int quantity;
	int next;
	int index;
	unsigned char* storage;
	}CStash;
	void initialize(CStash* s, int size);
	void cleanup(CStash* s);
	int add(CStash* s, const void* element);
	void* fetch(CStash* s, int index);
	int count(CStash* s);
	void inflate(CStash* s,int increase);
	
Kopiuj
 
#include "Clib.h"
#include <iostream>
#include <cassert>
using namespace std;
const int increment=100;

void initialize (CStash* s, int sz){
	s->size=sz;
	s->quantity=0;
	s->storage=0;
	s->next=0;
	s->index=0;
}
int add(CStash* s, const void* element) {
	if (s->next >=s->quantity)
	inflate (s, increment);
	int startBytes= s->next * s->size;
	unsigned char* e=(unsigned char*)element;
	for (int i=0;i<s->size;i++)
	s->storage[startBytes+i]=e[i];
	s->next++;
	return(s->next-1);
	
}
void* fetch(CStash* s,int index)
{
	assert(0<-index);
	if(index >= s->index)
	
	return 0;
	return &(s->storage[index* s->size]);

}
int count(CStash* s){
	return s->next;
	
}
void inflate(CStash* s, int increase)
{
	assert(increase>0);
	int newQuantity=s->quantity+increase;
	int newBytes=newQuantity * s->size;
	int oldBytes= s->quantity * s->size;
	unsigned char* b= new unsigned char[newBytes];
	for(int i=0;i<oldBytes;i++)
	b[i]=s->storage[i];
	delete[](s->storage);
	s->storage =b;
	s->quantity=newQuantity;
	
}
void cleanup(CStash* s){
	if (s->storage !=0){
		cout<<"zwalnianie pamieci"<<endl;
		delete []s->storage;
	}
}
Zobacz pozostałe 2 komentarze
Patryk27
Dev-C++ nie jest kompilatorem :|
BL
dobra oki nie jest, czy jest. Ale kompiluje.
Patryk27
Dev-C++ nic nie kompiluje :P
43
Bardzo ładny pasek zadań. DevC++ w dalszym ciągu nie kompiluje.
msm
Administrator
  • Rejestracja:około 16 lat
  • Ostatnio:5 miesięcy
0

Nie masz nigdzie funkcji main (nie uruchomisz tego kodu bezpośrednio) :]

edytowany 1x, ostatnio: msm
BL
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:9
0

a jak skompilować to nie bezpośrednio i gdzie wstawić main()? Chciał bym się poduczyć troche C++, dlatego prosił bym troche jaśniej tłumaczyć.

fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
1

zmień środowisko na c::b na przykład. Zacznij od podstaw. Napisz hello world na sam początek (skoro nie wiesz gdzie dać funkcje main())

BL
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:9
3

Nie dzięki wole to rozklinić, niż bawić się.... zresztą i tak to już przerabiałem c(Ansi) i b(orland Pascal albo inny twór tej firmy), też z książek. Chociaż twoja rada może okazać się cenna, tylko nie wiem dla kogo.

edytowany 1x, ostatnio: blazeyos
Zobacz pozostałe 4 komentarze
BL
chodzilo mi o Ansi C i B jak Borland Pascal.
hauleth
A ja się zastanawiałem jak ty zdobyłeś książkę do B.
JA
Facet, nie pogrążaj się. ;-P C::B to IDE...
BL
masz racje co do tego firma z językiem mi się pomyliła.
43
Nie rozumiem... http://pl.wikipedia.org/wiki/B_(język_programowania) A wy myślicie, że skąd się wzięła nazwa "C"? :/
MA
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 6 lat
  • Postów:260
0

Czyli chcesz być klepaczem kodu? Bo jeśli chcesz coś zrobić bez zrozumienia tego to sorry, programistą nie zostaniesz. Chłopie, jak nie wiesz, jak wywoływać funkcje ani, że jest potrzebna funkcja main(), i bierzesz się za te rzeczy to chyba coś nie tak.


Moja strona: <hr>www.toka-information.prv.pl</hr>
Mam pytanie - Kto mi powie jak się zachęcić do programowania :D?
BL
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:9
0

Klepaczem nie koniecznie, ale póki co większość odpowiedzi to klepanina poza jedną. Nikt konkretnie nie odpowie, a przecież forum do tego jest. Robie to dla własnej przyjemności, kupiłem książkę spox coś mi nie idzie pytam na forum. pozdr.

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 minuty
0
blazeyos napisał(a)

Dev-C++
Przed chwilą ściągnąłem niby to najnowszy Dev-C++. Kompilacja przedwczorajsza.
Naprawdę chciałem dać mu szansę.
Standardowa, pełna instalacja. Nic nie zmieniam.
Piszę hello worlda.

  • Denerwujące uzupełnianie nawiasów. (Visual robi to dobrze, QtCreator jeszcze lepiej)
  • Debugowanie nie działa. Bo po co. /zakładam że to GDB jest winny, bo pod QtCreatorem podobne cyrki się czasami dzieją/
  • Edytor się kaszani. Chcę zdjąć breakpointa, a ten zamiast tego zwija blok kodu.
  • Podpowiadanie składni biedackie. Nie interesuje mnie że funkcja jest _CRTIMP __MINGW_COŚTAM _DUPABLADA, kiedy przez to jej nazwa nie mieści się w okienku.
  • Edytor wpadł w jakąś pętlę wstawiając co sekundę nawias albo symbol strzałki w lewo.
    itd.

Jak ty możesz w tym pisać?

edytowany 1x, ostatnio: Azarien
Patryk27
Pewnie pisze w Notatniku, a kompiluje w Dev-C++ :D
BL
ty chyba w Notepad++ ;p
GO
Już wolałbym pisać w Notepad++, a potem puścić kod w kompilator niż męczyć się z edytorem Dev-a ;-)
BL
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:9
0

normalnie na studiach z info, wszystko z C/C++ było pisane w Devie. Tak dr. zalecają z pwr.
Thx za rozjaśnienie

GO
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 10 lat
0

Dev to już przeszłość. Na studiach czy w szkołach ciągle go pokazują, a potem ludzie mają jakieś problemy z d**y podczas pisania i nie potrafią sobie z tym poradzić. Nawet nagłówki bibliotek zawartych w Devie mają tyle brakujących definicji, że idzie się pochlastać. Do tego od czasu do czasu potrafi zaliczyć crash z byle powodu (np. wejście w konfiguracje). Azarien słusznie zwrócił uwagę na denerwujące uzupełnianie nawiasów. Kiedyś kombinowałem w konfiguracji jak to dobrze ustawić, i ciągle było coś nie tak. Jak chcesz pisać tylko proste programy konsolowe liczące, wyświetlające coś i ew. wczytujące z klawiatury to Dev może być. Jak coś poważniejszego (np. w przyszłości aplikacje okienkowe) to radzę Ci ściągnąć Visual C++ Express 2010. Uzyskasz tam dodatkowo możliwość kompilowania do x64, wsparcie Unicode itd...

Zobacz pozostałe 9 komentarzy
Azarien
@Goodrock: x64 oficjalnie to dopiero w VS Pro. są jakieś sposoby na doinstalowanie do Express, ale mnie to nie działało.
_13th_Dragon
@Goodrock, ja też wam "życzliwie doradziłem". ;)
mr_jaro
żeby kompilować do x64 w vsc++ wystarczy doinstalować sdk
Azarien
nie, nie wystarczy: "ale mnie to nie działało". postanowiłem nie tracić na to całego dnia czasu i odpuściłem.
mr_jaro
hmm a to nie wiem, czytałem, że można w ten sposób, więc myślałem, że nie ma tam wielkiej filozofii
msm
Administrator
  • Rejestracja:około 16 lat
  • Ostatnio:5 miesięcy
0

To jest biblioteka, musisz ją jakoś wykorzystać - na przykład robiąc taki main:

Kopiuj
int main()
{
    int a = 5, b = 7;
    CStash c;
    initialize(&c, 0);
    add(&c, &a);
    add(&c, &b);
    cout << "Dodany element 1: " << (int*)fetch(&c, 0) << endl;
    cout << "Dodany element 2: " << (int*)fetch(&c, 1) << endl;
    cleanup(&c);
}

Przy okazji, assert(0<=index); a nie assert(0<-index);.

Tak czy inaczej ten kod nie działa, if(index >= s->index) nigdy nie zwróci true bo s->index jest zawsze == 0: na pewno dobrze ten kod przepisałeś?

BL
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:9
0

Masz racje wkradł mi się błąd w kodzie. Wstawiłem też Twój main(), program się uruchomił. Otrzymany komunikat jest na zamieszczonym linku http://imageshack.us/f/442/complt.jpg/ . Dzięki wielkie za pomoc.

edytowany 1x, ostatnio: blazeyos

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.