607050
(Begi89)
23 Maj 2010 16:38
#1
void ledbar (int rpm)
{
//kod
_endthread();
}
//w mainie
_beginthread(ledbar(rpm),0,0); //<- tu wywala poniższe błędy
c:\Users\Administrator.siec\Desktop\Nowy folder\2\c2p2a\c2p2a.c(190): error C2095: '_beginthread' : actual parameter has type 'void' : parameter 1
c:\Users\Administrator.siec\Desktop\Nowy folder\2\c2p2a\c2p2a.c(190): error C2198: '_beginthread' : too few arguments for call through pointer-to-function
generalnie błąd jest z tym nawiasem (rpm) bo _beginthread(ledbar,0,0); lub _beginthread(ledbar,rpm,0,0); kompiluje się , no ale funkcja ledbar w tedy nie działa poprawnie…
pio_95
(pio_95)
23 Maj 2010 17:10
#2
A funkcja ledbar() zwraca jakąś wartość?
Skoro jest to typ void, to raczej nie.
Moim zdaniem, stąd błąd “zbyt mało argumentów”.
P.S. W C++ jestem na dużo niższym poziomie, więc proszę się nie śmiać, jeśli palnąłem jakąś głupotę ;p
nr47
(Sawyer47)
23 Maj 2010 17:30
#3
u Ciebie ledbar nic nie zwraca, to jak chcesz do _beginthread jako pierwszy parametr przesłać “nic”?
607050
(Begi89)
23 Maj 2010 17:48
#4
jak nic? przecież przekazuje int
pio_95
(pio_95)
23 Maj 2010 18:22
#5
INT przekazujesz do funkcji ledbar().
Natomiast ona nie przekazuje niczego do tej, w której została wywołana.
Aby przekazywała tam wartość naturalną, musiałbyś:
Zmienić typ funkcji z void na int.
W funkcji ledbar() umieścić polecenie return wynik_do_przekazania;
system
(system)
23 Maj 2010 18:22
#6
@nr47 ma rację
coś typu int przekazujesz do ledbar().
ledbar() nie zwraca nic jako pierwszy argument przy wywołaniu _beginthread().
btw. to nie jest błąd składniowy tylko raczej błąd typów
EDIT: ups, ktos mnie wyprzedził
607050
(Begi89)
23 Maj 2010 18:41
#7
dokładnie
bo funkcja void nie ma nic do przekazywania! ma po prostu chodzić
Problem chyba rozwiązałem pakując wszystko do klasy, gdzie parametry są znane i nie muszę je przekazywać do funkcji [taki mam plan w każdym razie]
Powstał natomiast dziwny błąd w klasie
class Pomocnik1
{
public:
Pomocnik1();
double a,b,c;
void pobierz();
void ledbar();
private:
};
c:\Users\Administrator.siec\Desktop\Nowy folder\2\c2p2a\Pomocnik1.h error C2059: syntax error : ';'
c:\Users\Administrator.siec\Desktop\Nowy folder\2\c2p2a\Pomocnik1.h error C2061: syntax error : identifier 'Pomocnik1'
c:\Users\Administrator.siec\Desktop\Nowy folder\2\c2p2a\Pomocnik1.h error C2449: found '{' at file scope (missing function header?)
c:\Users\Administrator.siec\Desktop\Nowy folder\2\c2p2a\Pomocnik1.h(12): error C2059: syntax error : '}'
pio_95
(pio_95)
23 Maj 2010 19:24
#8
Więc jeśli nie ma nic przekazywać to nie wkładaj jej jako parametr dla innej funkcji…
Edit:
Nie prościej zastosować zmienne globalne i wywołać tą funkcję normalnie poza inną?
Co do klas - po prostu się na tym nie znam ;/