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:prawie 16 lat
  • Ostatnio:4 miesiące
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:ponad 13 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:13 minut
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:prawie 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...

Azarien
No tylko że Visual, zwłaszcza 2010, jest raczej za ciężki jak na proste programy konsolowe... A uzupełnianie nawiasów ma sens tylko wówczas, gdy nie przeszkadza w pisaniu. Jeśli z rozpędu napiszę () a edytor po pierwszym ( uzupełni ), to absolutnie niedopuszczalne jest, by w wyniku otrzymywało się ()).
_13th_Dragon
Ostatni Dev jest nowszy niż Visual C++ Express 2010, jesteś nie na czasie ;P
GO
@Azarien - Nie twierdzę, że w Visualu edytor działa perfekcyjnie, ale na pewno lepiej niż w Devie. Bardziej już mi przeszkadzają te automatyczne wcięcia w lewą stronę gdy napiszę "case stała" i potem dwukropek. Ale to też da się znieść. Być może da się to też zmienić - nie wiem bo jeszcze nie szukałem. @_13th_Dragon - faktycznie, masz rację. Ciekawi mnie jednak, jak wygląda sytuacja z zawartością plików nagłówkowych, stabilnością Dev-a i ogólnymi zmianami na plus i minus.
Azarien
nowy dev ma GCC 4.6.3 i aktualne nagłówki - tak że akurat na to narzekać nie można.
_13th_Dragon
@Goodrock, @Azarien - może wam wytłumaczę Dev to IDE on NIE MA nagłówków, nagłówki ma kompilator. ;P
msm
@Goodrock - Tools->Options->Text Editor i masz pełno opcji do ustawienia. Przynajmniej w VSC# jest tego pełno, w tej chwili nie sprawdzę w VSC++.
GO
@_13th_Dragon - nie czepiaj się, wszyscy dobrze wiemy o co chodzi.
_13th_Dragon
Nie no jak początkujący coś takiego napisze to wszyscy się czepiają a wy to co? Święte krowy?
GO
Pisząc "Dev" mam na myśli cały pakiet czyli uwzględniam wersję MinGW, w tym oczywiście pliki nagłówkowe, zawarte w instalatorze. Nigdzie nie napisałem, że nagłówki ma kompilator. Azarien również tego nie napisał. Tak więc niepotrzebnie spychasz dyskusję na inny tor. A to, że można sobie zaktualizować zarówno kompilator jak i nagłówki to zupełnie inna bajka. I nie "wszyscy się czepiają". Ja się nie czepiam początkujących. Jeśli już to staram się im życzliwie doradzić ;-)
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:prawie 16 lat
  • Ostatnio:4 miesiące
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
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)