• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Pisanie w c++ bez używania bibliotek

Object Storage Arubacloud
+1 głos
1,665 wizyt
pytanie zadane 31 lipca 2016 w C i C++ przez pewien_programista Obywatel (1,070 p.)
zamknięte 31 lipca 2016 przez pewien_programista
Witam!

Moje pytanie nie polega na tym czy da się pisać w c++ bez bibliotek (wnioskuje, że jest to możliwe, bo jak inaczej napisać same biblioteki), ale raczej jak to zrobić. Chodzi mi konkretnie o to, jak np. wypisać w konsoli napis bez użycia "cout", czy nawet stworzyć własną bibliotekę bez używania już istniejących. Wiem, że wydaje się o bezsensowne, bo po co wymyślać drugi raz koło, ale wydaje mi się, że aby dobrze zrozumieć jak działa c++ powinienem chociaż znać zasadę pisania bez używania gotowych bibliotek. Z góry dziękuje za odpowiedź.
komentarz zamknięcia: Dziękuje! Wiem już to co chciałem. W takim razie teraz czas na naukę asemblera :D

3 odpowiedzi

+8 głosów
odpowiedź 31 lipca 2016 przez adrian17 Ekspert (344,860 p.)
wybrane 31 lipca 2016 przez pewien_programista
 
Najlepsza

Chodzi mi konkretnie o to, jak np. wypisać w konsoli napis bez użycia "cout", czy nawet stworzyć własną bibliotekę bez używania już istniejących

  • możesz uniknąć cout, używając printf... ups, to w <cstdio>
  • możesz użyć bardziej niskopoziomowego fwrite()... ups, to też w <cstdio>
  • na Windowsie możesz użyć jeszcze bardziej niskopoziomowego WriteFile... ups, to w <windows.h>
  • na Linuxie możesz użyć wrappera libc wokół syscalla write()... ups, to w <unistd.h>
  • możesz bezpośrednio wywołać linuxowego syscalla przez syscall()... ups, wciąż potrzebujesz <sys/syscall.h>

Żeby to faktycznie zrobić "bez bibliotek" musiałbyś ręcznie przygotować i wywołać syscalla przez napisanie wstawki asemblera w kodzie. Wiedza potrzebne do zrobienia tego jest całkiem spora.

Jak widzisz, poziomów abstrakcji jest masa i nie da się tak po prostu "nie używać bibliotek", bo sama możliwość normalnej komunikacji z systemem też jest realizowana przez bibliotekę.

+1 głos
odpowiedź 31 lipca 2016 przez jegor377 Stary wyjadacz (13,230 p.)

Bez używania bibliotek nie możesz nic normalnie napisać. Musisz korzystać albo z tzw. Dll-ek, na których działa większość C++ i ogólnie nawet jak tworzysz apkę na wina, która ma wyświetlać okienko, to w realu nie kodujesz w pliku exe, informacji dla karty graficznej jak wyświetlić takie okienko, lub dla procka, jak obsłużyć wejście, tylko w realu twój program, do którego includowałeś winapi, wczyta sobie do swojej pamięci dll'ke z katalogu sys (i to do tego w czasie działania programu. W ten sposób można robić hacki do np. csa, albo innej gry. Nazywa się to dll injection, czyli wstrzykiwanie tych całych dll), którą potrzebuje i wykona co trzeba. Na tych systemowych dllkach opierają się właśnie wszystkie programy. Aczkolwiek w czystym cpp bez bibliotek możesz normalnie wyświetlić tekst, aczkolwiek wtedy jest to hakerka i generalnie to się głównie opiera na pisaniu kodu w cpp w taki sposób, by to co wyjdzie w assembly pobrało sobie z pamięci adres funkcji do wyświetlania tekstu. O ile się nie mylę Gynvael takie coś zrobił. Ale jeśli chodzi o wyświetlanie w ten sposób całych okienek, to wątpie, bo musiałbyś skorzystać z podstawowych funkcji do wczytywania dll ek, a one są raczej w jakich includach. ;) To dlatego gdy przerzucasz program z jednego sys do drugiego to wszystko działa nawet na linuxie - Dll (dynamic linked libraries). Oczywiście to wszystko do duże uproszczenie. - tu masz wszystko :)

komentarz 31 lipca 2016 przez jegor377 Stary wyjadacz (13,230 p.)
albo się mylę, bo on chyba po prostu wywołał jakieś niskopoziomowe przerwania niczym na starym dosie do wyświetlenia tekstu. :)
0 głosów
odpowiedź 31 lipca 2016 przez KSYMEK Gaduła (3,280 p.)
komentarz 31 lipca 2016 przez pewien_programista Obywatel (1,070 p.)
Na stronie do której prowadzi link jest napisane na temat pierwszego kompilatora c++ (O ile dobrze zrozumiałem), czy mam przez to rozumieć, że biblioteki standardowe są pisane po prostu w c?
komentarz 31 lipca 2016 przez DragonCoder Nałogowiec (36,500 p.)
C++ jest nowszą wersją C, która oferuje większe możliwości niż zwykły C. A więc biblioteka może być napisana w C, ale możesz stworzyć własną w C++ a tak czy siak kompilator zmeini to na kod assemblera. Dobrze mówie?
3
komentarz 31 lipca 2016 przez adrian17 Ekspert (344,860 p.)

C++ nie jest "nowszą wersją C", jest osobnym językiem. C rozwija się niezależnie i w 2011 dostał nowy standard.

komentarz 31 lipca 2016 przez KSYMEK Gaduła (3,280 p.)
Jednak z założenia C++ jest po prostu rozwinięciem C,jednak aktualnie każdy język jest rozwijany osobno.

Podobne pytania

0 głosów
1 odpowiedź 203 wizyt
+1 głos
3 odpowiedzi 1,413 wizyt
pytanie zadane 7 stycznia 2016 w C i C++ przez Gowi Użytkownik (830 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...