• 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

VPS Starter Arubacloud
+1 głos
1,647 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,100 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,100 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ź 190 wizyt
+1 głos
3 odpowiedzi 1,371 wizyt
pytanie zadane 7 stycznia 2016 w C i C++ przez Gowi Użytkownik (820 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...