Új hozzászólás Aktív témák
-
Domonkos
Ármester
válasz Hunmugli #3800 üzenetére
Ha masolsz kodot, akkor rapillanthatok hogy mi csuszhat felre.
BTW: elozo hozzaszolasomban irtam, hogy jol optimalizalva ez akar egyetlen muvelet is lehet. Nos nem. HaN
is parameter, akkor (a regiszterekbe masolgatassal egyutt) 4 utasitas lesz. Viszont annyi igaz, hogy ennel nem lesz mar nagyon optimalizaltabb megoldas. Az egy muveletet azt a megfelelo bit atbillentesere ertettem.Gender of electrical connectors is defined by the pins.
-
mgoogyi
senior tag
válasz Hunmugli #3797 üzenetére
"Baloldalt egy char van, jobboldalt egy bit, ez nem fog menni".
A char egy 8 bites szám és jobb oldalt nem bit van, hanem egy másik 8 bites szám, aminek jellemzően egy adott bitje tér el a többitől. Innentől pedig az alap bitműveletek kellenek (és,vagy,xor,negálás)
Amit csinálsz, azt szokták flageknek hívni, minden bitnek megvan a saját jelentése.Nem kell túlgondolni az elképzelést:
1101 & 0010 = 0000 (bit ellenőrzés)
1101 | 0010 = 1111 (bit beállítás)Gyakorold valamennyit papíron, lehet az segít abban, hogy lásd, hogy melyik művelet mire jó.
Pl. 1-es bittel éselés az adott bit értékét fogja kiköpni, 0-ással(1011) az adott bitet állítod garantáltan nullára.A flagekre visszatérve: ilyesmit szoktak csinálni, hogy:
Option1 = 1 (001)
Option2 = 2 (010)
Option3 = 4 (100)Options = 101 esetén az option 1 és 3 van bekapcsolva.
Bár lehet, hogy te pontosan erre akarod használni."C bitjei balról jobbra vannak számozva, 0tól kezdődően 7ig. Function szerűen kéne"
Szerintem jobbról balra számozd a biteket, akkor a természetes bitsorrendet kapod és a 001 = 1-et jelent majd decimálisan, az 100 meg 4-et pl.
A 0-ás indexű bit a 2^0-át jelenti, az 1-es a 2^1, stb.stb.Ha kérdésed van bitekkel kapcsolatban, akkor kérdezz(akár privátban is rámírhatsz), ezzel relatíve sok gyakorlatom van.
-
Lejszi
senior tag
Sziasztok!
Ms Visual Studiot hasznalok. Egyik nap egyszer csak megbolondult a progi es nem akarja megjeleniteni az eredmenyt. A kod (ha jo) termeszetesen lefut, de nem latom az eredmenyt. Tudna vki segiteni ebben?
Par hete kezdtem el tanulni a c++ nyelvet szoval elegge kezdonek szamitok.
Ha a _getch() -t irom a vegere akkor sem jelenit meg semmit a kepernyon.Itt egy pelda program es amit kiir lefutas kozben es utana:
Futas kozben, amikor keri az erteket:
Majd miutan lefutott:
-
mgoogyi
senior tag
Debug módban indítva breakpointoknál meg tudod fogni a progi futását. Katt a sor elé és megjelenik egy piros pötty. Ha megállt a breakpointnál: F5 hagyja továbbfutni a progit, F10 egy sort lép, F11 belelép a hívandó függvénybe. Amikor áll a cucc, meg tudod nézni a változók értékét is. Próbálkozz, menni fog.
-
nji
aktív tag
sziasztok,
nem tudtok valakit Miskolc környékén, aki pénzért hajlandó korrepetálni?
Esetleg skype-on is jó, ha megbízható és leinformálható valaki, mert nem szeretnék úgy járni, hogy átutalom a pénzt és nem kapok cserébe oktatást.
Kezdő vagyok, természetesen a neten már sok mindent megnéztem, de jó lenne, ha valaki sorról sorra elmagyarázná az összefüggéseket egy bonyolult programon.
Pl előbb deklarálom a függvényt, meg megadom a struktúrát, osztályt, aztán meg kifejtem a függvényt aztán meg hívom a függvényt, meg vannak a visszatérési értékek , de kellene valaki, aki egy összetett programon keresztül az egész logikát elmagyarázza. Mint egy állatorvosi ló, ami alapján már más programot is meg tudnék írni.
Van valaki, aki ilyesmiben tud segíteni? -
#36268800
törölt tag
Sziasztok!
Hogyan érdemes, hogyan lehet egy egyszerű játéknak szép főmenüt készíteni?
Egy objektumorientált Snake-et szeretnék készíteni és arra gondoltam, hogy a főmenü lehetne egy HTML5 + CSS3 szerű(!) valami (a formázások, színösszeállítások végett, hogy szép legyen).Hogyan lehetne ezt vagy valamit, ami hasonlót eredményez, kivitelezni?
-
dabadab
titán
válasz #36268800 #3810 üzenetére
A HTML5 + CSS3 + javascript kombó simán működik, a Chromium Embedded Framework teljesen jól használható ilyesmire.
DRM is theft
-
Hunmugli
aktív tag
Egyenlőre nem volt időm a témával foglalkozni, de talán a jövőhéten már lesz. Ismerek egy helyet, tele nehéz feladatokkal, van benne gráfos is, majd meglátom, melyikekkel nem bírok el
[ Szerkesztve ]
A kevés tudás veszélyes. A sok is. – Bocs az offért.
-
Hunmugli
aktív tag
El tudok érni egy nemglobális változót egy függvényből anélkül, hogy benne hoznám létre, vagy hogy átadnám neki?
Valami ilyesmit akarnék megvalósítani:
#include <iostream>
using namespace std;
void kiir ();
int main () {
int szam = 42;
kiir();
return 0;
}
void kiir () {
cout << main::szam << endl; //tudom, hogy ilyen nincs, de szeretnem, ha lenne
}Kb úgy kéne, mintha a mainben közvetlenül létrehozott változók (is) globálisak lennének. Van erre mód?
Szerk.: Ez nem egy probléma, vagy ilyesmi, csak szeretném kijátszani a scope-okat
[ Szerkesztve ]
A kevés tudás veszélyes. A sok is. – Bocs az offért.
-
dabadab
titán
válasz Hunmugli #3817 üzenetére
"El tudok érni egy nemglobális változót egy függvényből anélkül, hogy benne hoznám létre, vagy hogy átadnám neki?"
Szerencsére nem.
( Illetve nyilván mindent meg lehet csinálni, pointerekkel pl. megoldható, de ahhoz azért elég jól kell tudni, hogy adott architektúrán az adott fordító mit csinál és pontosan hova kell célozni a stackben. Ja, meg persze feltétel, hogy az adott változó ténylegesen létezzen, mert a példádban a fordítók jó eséllyel kioptimalizálnák a szam változót )
DRM is theft
-
Domonkos
Ármester
válasz Hunmugli #3817 üzenetére
Pointeres hackelessel tuti meg tudnad oldani - noha majdnem ugyanott lennel, ha egy pointert passzolgatnal/raknal egy kulso szkopba a valtozo helyett...
Egyeb ami eszembe jut, az a kulonbozo IPC megoldasok, mint peldaul az osztott memoria. Nem nagyo elegans, az olvashatosagon tuti ront es foloslegesen bonyolitja meg a dolgot, ha csak erre szeretned hasznalni, de mukodhet.Gender of electrical connectors is defined by the pins.
-
Hiftu
senior tag
válasz Hunmugli #3817 üzenetére
Elmondom, miért nem ajánlott ilyesmiröl még gondolkodni sem.
1, nem tudod lokálisan elemezni a függvényt. Egy csomó külsö függösége lenne.
2, a külsö függöségei gyakorlatilag láthatatlanok lennének.
3, mások számára olvashatatlan lenne a kód (a való életben ez fontos). Keresnék a változókat lokálisan, paraméterként, adattagként, globálisnak és sehol nem találnák. Ez bujócskának jó lenne, de szoftvernek rossz.
4, hála istennek a c++ nem enged meg ilyet.Megoldás: használj paramétert és minden rendben lesz.
[ Szerkesztve ]
Tessék mondani, lehet itt hazudni? - Kaszt: Decker, Faj: Troll, Működési Terület: Prohardver
-
dobragab
addikt
Napi mitírki, nem magamtól szültem, élet hozta.
#include <iostream>
struct X
{
int x = 0;
void f()
{
[=]() mutable
{
x = 3;
}();
}
};
int main()
{
X x;
x.f();
std::cout << x.x;
}a) nem fordul
b) 0
c) 3[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
EQMontoya
veterán
válasz dobragab #3821 üzenetére
Hát, ha ez egy value szerinti capture (
[=]
), akkor az eredeti X-et nem módosíthatja, hanem csinál egy copyt.
Ez kvázi egy private member lesz abban a function objectben, amit a lambdából csinál a fordító. Mutable meg gondolom, azért lett, mert különben nem fordult, mert a saját privát X copyját nem illene módosítania.
Szóval szerintem 0-t ír ki, és mutalbe nélkül nem fordul.Same rules apply!
-
dobragab
addikt
válasz EQMontoya #3823 üzenetére
Nem. A mutable az ellenség megtévesztése miatt került oda, az élet szülte változatban nem volt mutable.
[=]
valamiért (nem tudom, miért, számomra is rejtély) nem x-et, hanem this-t capture-öli érték szerint, de mivel this az eredeti objektumra mutat, az eredeti x-et változtatja. Tehát 3.(#3822) Domonkos
Funkcionális programozás nélkül elég mélyen lennék a ganéban, így egy teljes natív C++ shell motorja ~2000 sor.
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
-
nonsen5e
addikt
Üdv!
Milyen extra dolgokat érdemes tudni a .hpp header file-okról?
C-ben semmi gondom nem akadt lekezelni őket, minden további nélkül megtömtem a .h állományokat a függvénydeklarációkkal, majd a .c fileokat az implementációkkal.Most egy projektben alapból megírtam mindent a .hpp-be, szedném szét, hogy szépen strukturált legyen, de most amint kiszedem akár egy függvény törzsét is, rögtön különböző hibákra hivatkozik.
A .hpp-ben levő operator<< multiple deklarációra hivatkozik (ebből nincsen pedig dupla), míg ettől a .hpp-től teljesen külön .hpp file másik operator<<-ra meg már nem talál illeszkedő elemet. Teszi ezt akkor, ha a cpp-be akár egy szimpla, csak a teszt kedvéért megírt (cout << "hello world") függvényt is átteszek. Ha üresen hagyom, akkor működik minden.
D4 klán: HunPH - invért privát rám
-
mgoogyi
senior tag
válasz nonsen5e #3826 üzenetére
Tudsz feltenni netre egy problémás minimál csomagot?
A leírásodból halvány fingom sincs, hogy mi lehet gond + nem tudok róla, hogy a .h és .hpp fileok között bármi különbség kéne legyen a kiterjesztésen kívül."rögtön különböző hibákra hivatkozik"
Konkrétan?"operator<< multiple deklarációra hivatkozik"
nem include-olod duplán ugyanazt véletlenül? (akár közvetetten is) -
jattila48
aktív tag
válasz nonsen5e #3826 üzenetére
.hpp-be lehetőleg ne tegyél fv. vagy globális változó defíníciót (csak deklarációt), mert ezeket beinklúdolod a különböző fordítási egységekbe, amik le is fordulnak, de mindegyik object kódban megjelenik a beinklúdolt fv. kódja, amit a linker többszörös definíciónak vesz. Pl:
//akarmi.hpp
#ifndef _AKARMI_HPP_
#define _AKARMI_HPP_
int f(int x){
return x;
}
#endif
//akarmi1.cpp
#include "akarmi.hpp"
#include <stdio.h>
int g(int x);
void main(void){
printf("%d",f(5));
printf("%d",g(6));
}
//akarmi2.cpp
#include "akarmi.hpp"
int g(int x){
return f(x);
}Itt az akarmi1.cpp-be, és az akarmi 2.cpp-be is bekerül az f fv. kódja, linkeléskor pedig dupla definíció miatt hibát ad a linker. Helyesen az akarmi.hpp-be csak deklaráció kerül (fv. prototype)
//akarmi.hpp
#ifndef _AKARMI_HPP_
#define _AKARMI_HPP_
int f(int x);
#endifés valamelyik .cpp állományba (akár új akarmi3.cpp-be) írod az f fv. definícióját.
Remélem tudtam segíteni.[ Szerkesztve ]
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
G.A.
aktív tag
Üdv!
A Visual Studio 2015-el (c++-ban irt kód) akadt egy kis gondom...
A kódot egy chip (FT2232H) "Application Note"-jából másoltam, ill. módosítom saját feladatomhoz.
A képen található a hiba amivel nem tudok mit kezdeni.Fordításkor azt a hibát kapom, hogy: 'byOutputBuffer': undeclared identifier
A 340, ill. a 342-es sorban is...
1. - az adott változó nem s abban a sorokban található
2. - a funkció elején ott virít a változó (létezik) (lentebbi két képen látható)Érdekesség:
Egy másik változóval is volt(van) ilyen problémám. Annak a "megoldása" az volt, hogy kikommenteltem //-el a változót, majd 2 sorral lentebb beillesztettem és így már megy is... (de hogy, mitől...???)
Képekben:
Hibás kód:
Működő kód:Ez valami VS'15 bug lenne?
-
mgoogyi
senior tag
Ha csinálsz szándékosan egy szintaktikai hibát, akkor minden sorra igaz ez a sorszám tévedés?
Hátha ki lehetne találni, hogy melyik sortól hülyül meg a sorszám.
(Az első gondolatom vmi rejtett karakter a kódban, amitől valamiért meghülyül a fordídtó.)Meglehetősen ezoterikus hibának látszik.
-
G.A.
aktív tag
válasz mgoogyi #3830 üzenetére
(Az első gondolatom vmi rejtett karakter a kódban, amitől valamiért meghülyül a fordídtó.)
Köszönöm szépen! Igazad van!
A kód pdf-ből történt másolása során az "enter" kód nem lett úgymond konstans. (Néhol \n, máshol \r\n)
Bezártam a VS-t, majd újranyitottam és egyből jelezte is a hibát és ki is javította.Köszönöm szépen még egyszer a segítséget!
-
dobragab
addikt
Napi Májkroszoft. Alapszituáció: az
strerror
nem thread safe, lehet, hogy valami globális memóriaterületen van a buffer, amit az strerror ír (!), és két threadről hívva minden szétrohad. Már ez is Microsoft-specifikus, mert *IX-eken az strerror semmit nem ír, csak kikeresi a sztringek közül az aktuálisat.Erre a C11 szabvány megoldása:
errno_t strerror_s(char *buf, rsize_t bufsz, errno_t errnum);
size_t strerrorlen_s(errno_t errnum);Tök frankó, lekéred a hosszát előre, allokálsz valamit neki, majd beleíratod.
Ehhez képest a Microsoft (néhány wide verzió mellett) ezt nyújtja:
errno_t strerror_s(char *buffer, size_t numberOfElements, int errnum);
errno_t _strerror_s(char *buffer, size_t numberOfElements, const char *strErrMsg);Jól látható, hogy az
strerrorlen_s
függvényt sikeresen kifelejetették, és használhatatlan az egész. Azstrerror_s
nem tudja visszaadni sehogy a méretet, ha nem fér bele.És akkor a dokumentáció, ami miatt a maradék hajamat is kitépem:
If strErrMsg is NULL, _strerror_s returns a string in buffer containing the system error message for the last library call that produced an error. The error-message string is terminated by the newline character ('\n'). If strErrMsg is not equal to NULL, then _strerror_s returns a string in buffer containing (in order) your string message, a colon, a space, the system error message for the last library call producing an error, and a newline character. Your string message can be, at most, 94 characters long.
- Miért zárja le sorvéggel?
- Miért pont Unixos sorvéggel?
- Hogy sikerült kitalálni, hogy pont 94 karakteres lehet a saját üzenet? Nem annyi lenne a dolga, hogy ráhív egy strlcpy-t? Miért kell felesleges limitációt bevezetni ide is?These functions validate their parameters. If buffer is NULL or if the size parameter is 0, the invalid parameter handler is invoked, as described in Parameter Validation. If execution is allowed to continue, the functions return EINVAL and set errno to EINVAL.
Ha a buffer csak simán kicsi, akkor is EINVAL-lal tér vissza, és ez sehol nincs ledokumentálva. És hogy miért pont EINVAL, az is rejtély, amikor ott van pont erre, szabványosítva az E2BIG és az ENAMETOOLONG.
_strerror_s, _wcserror_s, and __wcserror_s are not part of the ANSI definition but are instead Microsoft extensions to it. Do not use them where portability is desired; for ANSI compatibility, use strerror_s instead.
Mivan? ANSI kompatibilitás? Az strerror_s sose volt ANSI szabvány része, de az ISO C11-é igen. És - ahogy a Macskafogóban elhangzott - a műsort itt tetszették felejteni. Az a függvény, ami ezt a foshányást használhatóvá teszi, nincs implementálva.
template <size_t size>
errno_t strerror_s( char (&buffer)[size], int errnum); // C++ onlyIn C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically, eliminating the need to specify a size argument. For more information, see Secure Template Overloads.
Miééééhéhéhéhéért? Ha már C++, lehetne mondjuk std::string-gel visszatérő, ami az egész buffer nyavalyát feleslegessé teszi, az APIt pedig használhatóvá. De nem, a C++ template magic-et arra kell használni, hogy a hetvenes évekbeli borzalmasan szar API fényesebb legyen.
Szóval nekem így sikerült használhatóbbá tennem. Tudtok ajánlani valami jobbat esetleg?
std::string const& stdc_error::strerror(int no)
{
static thread_local std::string result(BUFSIZ, '\0');
// Let's hope strerror_s can't fail unless buffer is too small.
// Anyway, if buffer is small, it returns EINVAL (?)
int err;
while ((err = strerror_s(&result[0], result.size(), no)) == EINVAL)
result.resize(result.size() * 2);
if (err != EINVAL) // should not happen
result = "An unknown error occured in strerror_s.";
// Removing trailing '\n'. Assuming that if it contains a newline,
// it won't be in the middle of the string.
// Looking at this wonderful API, this assumption is risky.
auto pos = result.find_last_of('\n');
if (pos != std::string::npos)
result[pos] = '\0';
return result;
}[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
dobragab
addikt
Napi mitírki. Szó szerint, hétfő délután óta ezt debuggoltam.
#include <iostream>
#include <vector>
class X
{
int a;
std::vector<int> b;
int count_a(int i)
{
b.push_back(i);
return i*i;
}
public:
X(int i)
: a{count_a(i)}
{ }
void f() const
{
std::cout << b.size() << std::endl;
}
};
int main()
{
X x{4};
x.f();
return 0;
}Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
Hiftu
senior tag
Gyanítom, hogy 0-t kapsz a b vector méretére, különben nem írtad volna. Ha jól gyanítom, akkor az adattagok létrehozása a deklarálás sorrendjében történik. Az elképzelés em az, hogy "a" inicializálása után meghívodik a vector default constructora, ami üresre állítja azt.
Tessék mondani, lehet itt hazudni? - Kaszt: Decker, Faj: Troll, Működési Terület: Prohardver
-
Hiftu
senior tag
Közben kipróbáltam. Segmentation fault-ot írt ki.
A b.push_back(i)-re hasalt el.
Akkor ötletem nem volt rossz, csak az eredménye: az a inicializálásakor még nincsen b vectorod.Megoldás #1:
Felcseréled az a és b változó sorrendjét.
Ez egy elég gyenge megoldás, több változó esetén szívhatsz vele.Megoldás #2:
Az összefüggő adatok inicializálását kiveszed az inicializálási listából (de szarul hangzik magyarul)
és berakod a constructor függvénytörzsébe.Tessék mondani, lehet itt hazudni? - Kaszt: Decker, Faj: Troll, Működési Terület: Prohardver
-
dobragab
addikt
Így van. Amikor a count_a hívódik, a b adattag még nincs inicializálva, így nettó undefined behaviour.
Nálam természetesen a saját allokátortól valamiért (debug mód, vagy OS security, vagy direkt kiszúrásból) kinullázott memóriaterületet kaptam, ami véletlenül az adott implementációban az üres vektor memóriaképével egyezett (count == 0, capacity == 0, data == nullptr)... Ezen frankón lefutott a push_back. Otthon egyébként debug módban crash, release-ben fut.
Az első megoldást választottam, mert a prod kódban ott nem egy sima int van, hanem egy bonyolult, connection állapotot kezelő cucc, rengeteg adattaggal, az egyik konstruktorparaméterére hívtam egy count_a-szerűséget. És még a vektor is csak metaadat, így a tagfüggvényben csak lestem, miért romlik el minden, és a hitem szerint jól inicializált, sehol máshol nem módosított vektorra csak egy nap debugprintf után gondoltam.
Majd beletúrok az allokációba, hogy debug módban írja felül random adattal a memóriaterületet.
Amúgy meg szerintem kéne kérnünk egy SPOILER taget a topikba
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
EQMontoya
veterán
Én is azon gondolkodtam este (némi privát üzenetetek váltását követően), hogy hogyan lehetne ezt kivédeni. Mert ha ctorbab b@ssza el az ember az init sorrendet, arra ugye van warning, egyértelmű user error.
Ezt viszont már nem veszi észre a fordító, mert az a-t inicializálni próbáló fv. dependál b-n.
Tehát warning nem lesz, viszont irgalmatlan szívás igen.Ugye először lehetne még jönni azzal, hogy ctorból nem hívogatunk tagfüggvenyeket, de nem virtuálisakat nyugodtan lehet.
Talán a legnagyobb probléma itt az, hogy a ctor valami olyat próbál csinálni, ami nem teljesen feladata, de ez megint megfoghatatlan.
Same rules apply!
-
dobragab
addikt
válasz EQMontoya #3841 üzenetére
Megnéztem, se gcc 7.1.1, se clang 4.0, se clang-tidy nem találja meg. Utóbbiba mondjuk lehetne egy ilyen check-et építeni, majd rá is kérdezek, mert tényleg oltári szopás lehet egy ilyenből.
Valami clang sanitizer tuti megtalálná, de ez elvileg megfogható statikus ellenőrzéssel is.
Talán a legnagyobb probléma itt az, hogy a ctor valami olyat próbál csinálni, ami nem teljesen feladata
Az a vicc, hogy semmi olyan nem történik, mert a count_a melléktermékeként áll elő a prod kódban is a b.
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
EQMontoya
veterán
-
Hiftu
senior tag
Ez a téma elég messzire vezet. Szerintem két különálló részként kellene tekinteni egy kódra:
1, objektumok létrehozásra és kapcssolatok felépítése
2, business logika megvalósítása az objektumokkal.Ha lehetséges, akkor egy objektum kapja meg paraméterként a vele együttműködő objektumokat.
(nem minden esetben megoldható.) Ezáltal kisebb lesz a függőség és flexibilisebb a kód.
A létrehozás közben pedig kisebb lesz az esély a katasztrófákra.[ Szerkesztve ]
Tessék mondani, lehet itt hazudni? - Kaszt: Decker, Faj: Troll, Működési Terület: Prohardver
-
dobragab
addikt
válasz dabadab #3844 üzenetére
Mondjuk, kicsit általánosabban is meg lehetne fogalmazni, hogy tuti ne lődd tökön magad:
- Inicializáló listán ne hívj tagfüggvényt
- Inicializáló listán ne add ki a this-t vagy a *this-t
- Ha az osztály polimorfikus (van virtuális függvénye), ugyanezek a kitételek érvényesek a törzsre is.Utóbbi esetben a nem virtuális függvény hívása is veszélyes, figyelembe véve a template method pattern-t és ezt.
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
G.A.
aktív tag
Üdv!
A következő problémám akadt a Visual Studio 2015-ben C++ alatt.
UDP Socketeket (küldés/fogadás) szeretnék létrehozni, amik külön szálon futnának.
A gondom ott kezdődik, hogy ha a include-olom a "thread" könyvtárat, de még nem használom a funkcióit, akkor is hibák keletkeznek a működő socket funkciókkal:
Thread könyvtárral együtt:
bind(socketC, (SOCKADDR*)&myAddress, sizeof(myAddress));
nincs complie error, bind nem működik (nem jön létre)iResult = bind(socketC, (SOCKADDR*)&myAddress, sizeof(myAddress));
error: no suitable conversion conversion from ... existsThread könyvtár nélkül mindkét megoldásnál nincs error és működik is a bind().
Mi lehet itt a baj?
-
dobragab
addikt
Nincs veletlenul egy
using namespace std;
valahol a te kododban?Ugyanis C++11 ota letezik egy
#include <functional>
, amiben van egy globalisstd::bind
nevu fuggveny.Ezt a
functional
-t konnyen lehet, hogy a<thread>
is include-olja, es igy a ketbind
osszeakad.[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- EDIFIER R1700BTS hangfal pár makulátlan, új állapotban, 2 év hivatalos garanciával, alkalmi áron
- LG OLED55B23LA 2 Év GYÁRI GARANCIA
- Apple iPhone XR 128GB, Kártyafüggetlen, 1 Év Garanciával
- Gamer PC , i7 12700KF , RTX 3080 Ti , 64GB DDR5 , 960GB NVME , 1TB HDD
- Intel PC , i5 8500 , 1660 6GB , 32GB DDR4 , 512GB NVME , 500GB HDD
- MacBook Pro 13" 2016, i5 2.0GHz, 8GB Ram, 256GB SSD - rossz saját képernyővel, occón!
- Logitech G502 X vezetékes gaming egér, fehér, akár 25600 DPI
- Garett GRC Maxx okosóra, fekete, Android és iOs kompatibilis
- Zotac GeForce RTX 3070 Gaming 8GB GDDR6 256 Bit LED OC Videokártya
- Amazfit Bip 5 okosóra, krémfehér, Android és iOs kompatibilis
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest