C/Łączenie z innymi językami: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Derbeth (dyskusja | edycje)
m ort. dr. techn.
Linia 1:
{{infobox|Do zrozumienia zawartych tutaj treści będzie Ci potrzebna wiedza o innych językach programowania}}
 
Programista, pisząc jakiś program ma problem z wyborem najbardziej odpowiedniego języka do utworzenia tego programu. Niekiedy zdarza się, że najlepiej byłoby pisać program, korzystając z różnych języków. Język C może być z łatwością łączony z innymi językami programowania, które podlegają kompilacji bezpośrednio do kodu maszynowego ([[Asembler|Asembler]], [[Fortran]] czy też [[C++]]). Ponadto dzięki specjalnym bibliotekom można go łączyć z językami bardzo wysokiego poziomu (takimi jak np. [[Zanurkuj w Pythonie|Python]] czy też [[Ruby]]). Ten rozdział ma za zadanie wytłumaczyć Ci, w jaki sposób można mieszać różne języki programowania w jednym programie.
 
== Język C i [[Asembler|Asembler]] ==
{{infobox|Informacje zawarte w tym rozdziale odnoszą się do komputerów z procesorem i386 i pokrewnych.}}
Łączenie języka C i języka asemblera jest dość powszechnym zjawiskiem. Dzięki możliwości połączenia obu tych języków programowania można było utworzyć bibliotekę dla języka C, która niskopoziomowo komunikuje się z jądrem systemu operacyjnego komputera. Ponieważ zarówno asembler jak i C są językami tłumaczonymi do poziomu kodu maszynowego, za ich łączenie odpowiada program zwany '''linkerem''' (popularny ld). Ponadto niektórzy producenci kompilatorów umożliwiają stosowanie tzw. '''wstawek asemblerowych''', które umieszcza się bezpośrednio w kodzie programu, napisanego w języku C. Kompilator, kompilując taki kod wstawi w miejsce tychże wstawek odpowiedni kod maszynowy, który jest efektem przetłumaczenia kodu asemblera, zawartego w takiej wstawce. Opiszę tu oba sposoby łączenia obydwu języków.
Linia 87:
 
=== Wstawki asemblerowe ===
Oprócz możliwości wstępnie skompilowanych modułów możesz posłużyć się także tzw. '''wstawkami asemblerowymi'''. Ich użycie powoduje wstawienie w miejsce wystąpienia wstawki odpowiedniego kodu maszynowego, który powstanie po przetłumaczeniu kodu asemblerowego. Ponieważ jednak wstawki asemblerowe nie są standardowym elementem języka C, każdy kompilator ma całkowicie odmienną filozofię ich stosowania (lub nie ma ich wogólew ogóle). Ponieważ w tym podręczniku używamy głównie kompilatora GNU, więc w tym rozdziale zostanie omówiona filozofia stosowania wstawek asemblera według programistów GNU.
 
Ze wstawek asemblerowych korzysta się tak:
Linia 136:
Bardzo istotne jest tutaj to, abyśmy zawsze pamiętali o extern "C", gdyż w przeciwnym razie funkcje napisane w C++ będą dla programu w C całkowicie niewidoczne.
 
<noinclude>{{Nawigacja|C|
{{Nawigacja|C|
[[C/Przenośność programów|Przenośność programów]]|
[[C/Ćwiczenia dla zaawansowanych|Ćwiczenia]]|
}}[[en:C Programming/Mixing languages]]
}}
[[en:C Programming/Mixing languages]]
</noinclude>