From: ascatec <ascatec onet.eu>
Subject: Re: losowe zachowanie usleep
ascatec pisze:
> programik:
>
> -----------
> #include <iostream>
> #include <unistd.h>
>
> main() {
> int i=0;
> while (true) {
> std::cout<<i++<<std::endl;
> usleep(1);
> }
> }
> -----------
>
> raz wykonuje 1 iteracje na sekundÄ, raz tyle ile nadÄ
Ĺźy konsola wyĹwietlaÄ, od czego to zaleĹźy? obciÄ
Ĺźenie procesora ~0.01% gdy wykonuje tÄ
1 iteracje na sekundÄ, lub ~ 40% gdy dziaĹa tak szybko (jak bym sobie tego ĹźyczyĹ)
>
> # uname -a
> Linux xxxxxxxxxxxxxxxxxxxx 2.6.18-4-amd64 #1 SMP Mon Mar 26 11:36:53 CEST 2007 x86_64 GNU/Linux
po zamianie usleep na nanosleep dalej to samo, zastanawiam siÄ czy to nie jest zwiÄ
zane z jakimĹ oszczÄdzaniem energii z mianami rozdzielczoĹci zegarĂłw, taktowaĹ
From: Seweryn =?ISO-8859-2?Q?Habdank=2DWojew=F3dzki?= <shw_mail wp.pl>
Subject: Re: =?ISO-8859-2?Q?=5Bc=2B=2B=5D=B3adowanie?= klas +dlopen +error
Witam
user wrote:
> Chciałem przećwiczyć sobie ładowanie klas z bibliotek. Przykład niemal
> dokładnie zerżnąłem z http://tldp.org/HOWTO/C++-dlopen/thesolution.html
> jednak mam błąd
>
> main.cpp:19: error: cannot convert ‘budynek**’ to
> ‘budynek*’ in initialization
Mi działają podobne przykłady. Postaraj się wklejając błedy nie psuć
kodowania, bo nc nie widać.
> create_t* tworz_dom = (create_t*) dlsym(dom,"create");
> typedef budynek* create_t;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> extern "C" budynek* create(){
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
IMHO tu masz błędy. create_t jest wskaźnikiem do budynku. A powinien być
wskażnikiem (funkcją) tworzącą budynek.
Jak wstawisz typedefa, do pierwszej linijki, to tworz_dom jest typu
budynek**, a nie jest funkcją zwracającą budynek*.
Pozdrawiam.
--
|\/\/| Seweryn Habdank-Wojewódzki
\/\/
From: "andrew" <cut gazeta.pl>
Subject: =?iso-8859-2?Q?Re:_pensja_programisty_dla_pocz=B1tkuj=B1cego?=
Użytkownik "Artur Bać" <artur_nospam ebasoft.com.pl> napisał w wiadomości
news:fgn0f9$e32$1 news2.task.gda.pl...
> andrew pisze:
>> BTW: MS niczego nie narzuca, najwyżej pracodawcy. Równie dobrze możesz
>> pisać w C++.NET ;)
>
> Managed C++ z .NET ma tyle wspólnego z C++ co Java z asemblerem.
>
Dlatego dałem ";)" na końcu. Ma wspólną składnię w pewnym stopniu, ale
rozszerzenia dla .NET'a są po prostu brzydkie. (Ładna i spójna składnia to
może być zaleta albo wada języka jakby nie było).
Andrew
From: Seweryn =?ISO-8859-2?Q?Habdank=2DWojew=F3dzki?= <shw_mail wp.pl>
Subject: Re: Utilek do budowania =?ISO-8859-2?Q?zale=BFno=B6ci_pomi=EAdzy_headerami?=
Witam
Paweł wrote:
> wygeneruj zaleznosci za pomoca `cpp -MM -MP` i uzywaj tego w makefile-u.
Ale właśnie potrzebuję w druga stronę.
Na razie to załatwiam jakimś ręcznym skryptem:
grep "#include" *.?pp | grep "AAA.hpp" | cut -d':' -f1 | grep -v "AAA.hpp" |
sort -u | grep "\.cpp"
Wybieram pliki cpp.
A dalej ręczna dziubanina, bo teraz trzeba rekurencyjnie powtórzyć całą
operację dla plików hpp z linijki poniżej, czyli zamiast AAA.hpp należy
wykonać to samo dla każdego headera wygenerowanego przez:
grep "#include" *.?pp | grep "AAA.hpp" | cut -d':' -f1 | grep -v "AAA.hpp" |
sort -u | grep "\.hpp"
Pozdrawiam.
Ps. Czy w bashu można pisać rekurencyjne funkcje?
--
|\/\/| Seweryn Habdank-Wojewódzki
\/\/
From: Marcin Gabryszewski <firstname.surname gdata.pl>
Subject: =?ISO-8859-2?Q?Re=3A_Szybkie_tworzenie_tablic_dwuwymiaro?=
jacek.jackweb gmail.com pisze:
> [[ C++ ]]
>=20
> Witam, posiadam 2 pytania:
> 1. Jak wiadomo, w C++ tablice tworzy si=EA tak:
> string wartosci[2];
> // [... wiele kodu]
> wartosc =3D {"samochod", "koparka"};
>=20
> jak tworzy=E6 tablice wielowymiarowych, np. dwu- umiem r=F3wnie=BF:
> string wartosci[2][2];
std::string wartosci[2][2] =3D { {"w00", "w01"}, {"w10", "w11"} };
--=20
Regards,
Marcin Gabryszewski
G DATA Software Sp. z o.o.
www.gdata.pl
From: "pawel" <paw1976 poczta.onet.pl>
Subject: Re: Too many types in declaration
> Dla deklaracji unsigned long long w BC++ 5 pojawia się błąd:
>
> Too many types in declaration
> Czy można to jakoś obejść?
Może jest zmienna typu int64 ?
Paweł
From: "mx" <mx spam.no>
Subject: Re: MSVC vs. GCC
// typedef typename SomeBaseClass<TARG1, TARG2>::SomeStruct SomeStruct;
dzieeeki, wlasnie dawalem using SomeBaseClass<TARG1, TARG2>::SomeStruct;
i nie pomagalo :))
--
MX
From: "=?ISO-8859-2?Q?Marcin_Po=B3e=E6?=" <utterqvist NOSPAM.gazeta.pl>
Subject: =?ISO-8859-2?Q?Przeci=B1=BFanie_operator=F3w_a_szablony?=
mam sobie taką klase: (zapis skrócony i uproszczony)
class ManagerOfBugs
{
ofstream LogFile;
ManagerOfBugs & operator<<(const char *pcc)\
{\
LogFile<<"<li>"<<pcc<<" ";\
LogFile.flush();\
return * this;\
}
ManagerOfBugs & operator<<(const wchar_t *pcw);
{\
USES_CONVERSION;\
LogFile<<"<li>"<<W2A(pcw)<<" ";\
return *this;\
}
ManagerOfBugs & operator<<(string s);
ManagerOfBugs & operator<<(wstring ws);
ManagerOfBugs & operator<<(bool b);\
{\
LogFile<<"<li>"<<(b?"True":"False")<<" ";\
LogFile.flush();\
return *this;\
}
ManagerOfBugs & operator<<(RECT r);
ManagerOfBugs & operator<<(POINT p);
itd...
};
i tych operatorów mam mnóstwo i ciągle pojawiają sie nowe typy a do tego mam
też przeciążony operator (również dla wszystkich typów) '<' w sposób:
ManagerOfBugs & operator<(unsigned int n)\
{\
LogFile<<n<<" ";\
LogFile.flush();\
return *this;\
}
i teraz pytanie: czy da się taką różnorodność sparametryzować typem poprzez
szablon (lub dwa szablony)? Jak przeciążam typ wchar_t* to najpierw muszę go
zamienić na char* i dopiero zapisać do pliku, jak zapisuje typ bool to
zapisuję łańcuch znaków, jak int to liczbę, jak RECT to coś
takiego "[r.left,r.top,r.right,r.bottom]" ???
Proszę o pomoc
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
From: =?iso-8859-2?Q?Pawe=B3_Kierski?= <news pkierski.net>
Subject: =?iso-8859-2?Q?Re:_Dlaczego_biblioteka_boost_jest_taka_z=B3a=3F?=
Sebastian Nibisz w wiadomości <famats$58h$1 inews.gazeta.pl> pisze:
[...]
> Czyli niby jest biblioteką jezyka obiektowego a korzysta się z niej jakby
> była napisana dla języka C.
> Przykładem niech będa standardowe kontenery, na których większość operacji
> wykonuje się za pośrednictwem zwykłych funkcji.
Bo C++ nie jest językiem tylko obiektowym. Równie dobrze można
programować w nim strukturalnie. Pozwala również na generyczne
zapisywanie operacji, typów itd.
A operacje z std:: wykonuje się z reguły za pomocą generycznych
algorytmów (to te "makra") na iteratorach (obiektach), które to
iteratory najczęściej są udostępniane przez kontenery (obiekty).
Wszystko po to, żeby nie dublować funkcjonalności, o ile nie jest to
potrzebne (np. std::list ma ::remove(), choć jest std::remove).
--
Paweł Kierski
news pkierski.net
dodaj "[nomorespam]" w temacie jeśli piszesz z domeny innej niż .pl,
albo koniecznie chcesz obejść moje filtry 8-)
From: dienet <"dienet[anty_spam]" poczta.fm>
Subject: Re: Zawody w programowaniu
Dnia 19-10-2007 o 15:00:40 pawel <paw1976 poczta.onet.pl> napisał(a):
> Ile można zarobić?
Duzo obgryzionych paznokci, metlik w glowie, nieprzespane noce i bol glowy
;]
--
pozdr0
dienet
"Old C programmers never die. They're just cast into void."
From: =?iso-8859-2?Q?Maciek_Ob=B3aza?= <moblazaREMOVE box43.pl>
Subject: Re: czy to faktycznie wyciek ?
In news:fdqerg$g76$1 inews.gazeta.pl,
*Remigiusz Zukowski" <"roland[USUNTO]25* <"roland[USUNTO]25" gmail.com>
typed:
> Witam, koledzy wcześniej wyjaśnili w czym rzecz, przypomnę tylko, że
> nie trzeba jawnie wołać _CrtDumpMemoryLeaks() - jest ona wołana
> automatycznie przy zamykaniu programu.
> Czasami zdarzają się też 'fałszywe' wycieki pamięci, przykładowo (nie
> zawsze) dla statycznych obiektów z modułu ładowanego dynamicznie przez
> LoadLibrary i nie zwolnionego przez FreeLibrary
> Dużo lepszym systemem do sprawdzania alokacji jest ten poniżej (m.in.
> nie reaguje na wspomnianą powyżej sytuację):
> http://dmoulding.googlepages.com/home
> http://www.codeproject.com/tools/visualleakdetector.asp
vld znam, problem w tym że chciałbym support dla platformy x64, na co
wstawki w asmie w tym rozwiązaniu nie pozwalają, gdyż jak powszechnie
wiadomo nie są i prawdopodobnie nie będą wspierane w tej edycji
kompilatora, w takim razie jestem zmuszony do poszukiwania własnego
rozwiązania, ukradkiem zerkając np. na C++ Trivial Logger, na co - z tego
co rozumiem licencja pozwala. Poza tym temat mnie zainteresował :-)
--
Maciej Obłaza
From: glab.frm poczta.onet.pl
Subject: Re: dll i visual c++ 2005
ntive c++, znaczy daje new project, tam wybieram c++, win32 , kolejenie
wskazuję ze chcę DLL i znaznaczam epmty project
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
From: =?UTF-8?B?UGF3ZcWCIFRvbXVsaWs=?= <ptomulik wp.pl>
Subject: [C++] Jawne =?UTF-8?B?d3l3b8WCYW5pZSBrb25zdHJ1a3RvcmEgamVkbm9hcmc=?=
Witam.
PrĂłbuje uĹźyÄ konstruktora klasy jako zwykĹej funkcji statycznej,
(w celu skrĂłcenia zapisu przy wywoĹywaniu). PrzykĹadowo:
template<int N>
struct fill
{
template<typename Tx, typename Ta>
fill(Tx* x, Ta a) { for(int i=0;i<N;i++) x[i] = a;}
}
// I gdzieĹ indziej w kodzie:
double v[10];
fill<10>(v,0.0);
Wszystko dziaĹa, dopĂłki konstruktor ma wiÄcej niĹź 1 argumentĂłw.
Problem pojawia sie, gdy mam do czynienia z konstruktorem
jednoargumentowym i to niezaleĹźnie od tego czy uĹźywam szablonĂłw
czy nie. Efekt jest nastÄpujÄ
cy:
Kompilacja kodu, typu:
struct S
{
S(double*) {}
};
int main()
{
double* x; // linia 7
S(x); // linia 8
}
koĹczy siÄ u mnie komunikatami:
a.cpp:8: error: conflicting declaration âS xâ
a.cpp:7: error: âxâ has a previous declaration as âdouble* xâ
Takie same bĹÄdy otrzymujÄ jeĹli w ogĂłle nie zdefiniujÄ konstruktora,
tj. dla takiego przypadku:
struct S { };
int main()
{
double* x;
S(x);
}
Jedyne obejĹcie, jakie znalazĹem, to uĹźycie zapisu:
S dummy(x);
zamiast:
S(x);
ale to burzy mi trochÄ filozofiÄ, bo walczÄ o jednolity i prostÄ
skĹadniÄ wywoĹania funkcji.
Powiedzcie proszÄ dlaczego kod przytoczony na poczÄ
tku
nie chce mi siekompilowac, gdzie robie bĹÄ
d? Czy da sie go
jakoĹ obejĹÄ?
KompilujÄ gcc:
gcc version 4.2.1 (Debian 4.2.1-5)
--
~~~~~~~~~~~~~~~~~~~~~~~
~~~~ PaweĹ Tomulik ~~~~
~~~~ GG: 2800492 ~~~~
~~~~~~~~~~~~~~~~~~~~~~~
From: Mateusz Loskot <see.my signature.net>
Subject: Re: make -j3 - co na to pakiet visual studio
SirMike wrote:
> Mateusz Loskot wrote:
>> Nie twierdzę, że jest to do niczego, ale jak np. rozwiązujesz problem
>> zew. zależności, które u użytkownika mogą być w różnych lokalizacjach
>> niż Twoim środowisko. IOW, jak uzyskujesz dynamizm konfiguracji a'la
>> ./configure?
>
> Mozesz rozwinac? Jakis przyklad?
A bardzo proszę, SOCI.
Projekt składa się z "core + N number of backends" gdzie każdy backend
jest zależny od zewnętrznej biblioteki klienckiej dla danego DBMS.
Problem jest następujący: jak w przyjazny sposób skonfigurować
zestaw projektów (.sln + N .vcproj) aby użytkownik mógł określić
następujące elementy:
1. Jakie backendy chce zbudować
2. Jaka jest lokalizacja, w jego systemie, binarek oraz nagłówków dla
bibliotek klienckich
Czyli, analogicznie, chcę uzyskać coś a'la:
../configure \
--enable-backend-postgresql \
--with-postgresql=/path/to/pgsql
z tym że dla solucji Visual Studio.
Pozdrawiam
--
Mateusz Loskot
http://mateusz.loskot.net
From: Matuzalem <codemaster_ op.pl>
Subject: Re: debugowanie dll
On 28 Sie, 10:34, Rafa=B3 Sobalewski <rsoba... tlen.pl> wrote:
> Sorry, =BFe na tej grupie, ale nie wiem gdzie zapoda=E6 og=B3oszenie.
> Interesuje mnie temat debugowania i modyfikacji bibliotek dll. Modyfikacja
> niestety na poziomie assemblera.
Czemu niesetety? przeceiz asm to bardzo piekny jezyk.
> Ksi=B9=BFki do asma mam, co=9C nieco=9C z tego rozumiem, niestety ksi=B9=
=BFki omawiaj=B9 jedynie
> (te kt=F3re posiadam) tworzenie i assemblacj=EA program=F3w z kod=F3w =9F=
r=F3d=B3owych.
Niedawno ja tutaj polecalem:
wydawnictwo: Helion
tytul: "Cracking bez tajemnic"
autor: Jakub Zemanek
No i oczywiscie zasoby w sieci; jest tego multum (keywords: reverse
engineering; crack(ing)(me) itp. )
> Biblioteka jest ju=BF gotowa, a musz=EA do niej co=9C
> doda=E6. Teoretycznie mog=EA da=E6 jaki=9C rozkaz
> skoku w inne miejsce i potem rozkaz powrotu, bo nie mam innej mo=BFliwo=
=9Cci
> rozszerzy=E6 istniej=B9c=B9 ju=BF funkcj=EA.
Jesli ta funkcja my byc wprowadzona na stale, to zgadza sie.
> I borykam si=EA z takimi podstawami jak:
> - czy gdzie=9C w dllce, a pewnie tak jest, jest zadeklarowany rozmiar dla=
kodu
> i czy robi=B9c taki manewr musz=EA sobie policzy=E6 nowe warto=9Cci tego =
rozmiaru i
> zmieni=E6 w dllce te warto=9Cci?,
Tak, sa pewne wartosci ktore musisz zmienic (w zaleznosci od sposobu
jaki zastosujesz do dodania wlasnej funkcji).
(keywords: PE, IAT, IMAGE_IMPORT_DESCRIPTOR, itp.)
> - czy je=9Cli moje dodatki b=EAd=B9 odk=B3ada=E6 co=9C na stosie, ale p=
=F3=9Fniej to
> pozdejmuj=EA (przez zako=F1czeniem procedury) to czy musz=EA obawia=E6 si=
=EA o
> wywalenie si=EA programu?
Jesli wszystko zostanie poprawnie zaprojektowane to nie.
> - jek debugowa=E6 tego typu rzeczy? Mam OllyDbg, kt=F3ry teoretycznie =B3=
aduje
> bibliotek=EA, ale
Tak, olly ma "ale"... lepiej uzyj np. IDA.
Ogolne keyword to "inject your own code into a dll" (i podobne) ->
google.
Pozdrawiam
From: Miroslaw Makowiecki <tytan15 poczta.onet.pl>
Subject: Re: [c++] const string a string const
xmen wrote:
> Zawsze stosuje zapis const string& x w metodach klasy.
> Jednak widziaĹem juĹź kiedyĹ zapis string& const x. Przed chwilÄ
rĂłwnieĹź i
> chciaĹbym siÄ w koĹcu dowiedzieÄ, czy te zapisy sÄ
pokrewne, czyli moĹźna
> je uĹźywaÄ zamiennie, czy oznaczajÄ
coĹ zupeĹnie innego?
>
> CoĹ mi siÄ kojarzy (ale gĹowy nie dam), Ĺźe chyba tez o oczy obiĹo mi siÄ
> const string& const x <_<
>
> Bardzo bym prosiĹ o uĹwiadomienie mnie :)
>
MoĹźe byÄ const std::string&x lub std::string const&x co jest wĹaĹciwie to
samo znaczy. Zapis std::string &const x jest niepoprawny!
Pozdrawiam.