Dzwon.

Są ci, którzy przeczytali tę wiadomość przed tobą.
Subskrybuj odbieranie artykułów świeżych.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać dzwonek
Bez spamu

Opcjonalne i nazwane argumenty

Opcjonalne argumenty

W wersji C # 4.0 nowe narzędzie zwiększające wygodę określenia argumentów podczas wywołania metody. To narzędzie jest nazywane opcjonalne argumenty I umożliwia określenie wartości domyślnej parametru metody. Ta wartość Będzie on użyty domyślnie, jeśli odpowiedni argument nie zostanie określony dla parametru, gdy metoda zostanie wywołana. W związku z tym określa argument na taki parametr nie jest konieczny. Opcjonalne argumenty pozwalają uprościć wezwanie do metod, w których domyślne argumenty są stosowane do niektórych parametrów. Mogą być również używane jako forma "skróconej" metod przeciążonych.

Głównym bodźcem do dodania opcjonalnych argumentów była potrzeba uproszczenia interakcji z urządzeniami COM. W kilku modelach obiektów Microsoft (na przykład Microsoft Office), funkcjonalność jest zapewniana przez urządzenia COM, których wiele zostało zapisane dawno i są zaprojektowane tak, aby używać opcjonalnych parametrów.

Poniżej przedstawiono przykład używania opcjonalnych argumentów:

Za pomocą systemu; za pomocą System.Collections.genic; Za pomocą System.linq; Za pomocą System.Text; Namespace Consoleapplication1 (program klasy (// argumenty B oraz z określeniem podczas wywołania opcjonalnie statyczne int Mysum (int A, Int B \u003d 5, Int C \u003d 10) (powrót A + B + C;) Statyczne Void Główne () (int Sum1 \u003d mysum (3); int sum2 \u003d mysum (3,12); konsola.WRITELINE ("SUM1 \u003d" + SUM1); Console.Writelinine ("Sum2 \u003d" + Sum2); Console.Readline ();)))

Należy pamiętać, że wszystkie opcjonalne argumenty muszą być na pewno wskazane na prawo do obowiązkowego. Oprócz metod, opcjonalne argumenty mogą być stosowane w projektantach, indekserów i delegatach.

Zaletą opcjonalnych argumentów jest w szczególności w fakcie, że upraszczają leczenie programowania złożonymi złożonymi wyzwaniami metod i konstruktorów. Rzeczywiście, często w metodzie, musisz ustawić więcej parametrów niż zwykle. W takich przypadkach niektóre z tych parametrów mogą być opcjonalne ze względu na dokładne wykorzystanie opcjonalnych argumentów. Oznacza to, że potrzebne są tylko te argumenty, które są ważne w tym konkretnym przypadku, a nie wszystkie argumenty, które inaczej muszą być obowiązkowe. Takie podejście pozwala nam racjonalizować metodę i uprościć apelowanie programowania do niego.

Nazwane argumenty

Jeszcze jeden funkcjonalnośćktóry został dodany do C # za pomocą wersji wyjściowej wersji .NET 4.0, jest wsparcie tzw nazwane argumenty (nazwane argumenty). Jak wiadomo, podczas przesyłania argumentów procedura ich następuje, z reguły, powinna pokrywać się z tą kolejnością, w której parametry są zdefiniowane w samej metodzie. Innymi słowy, wartość argumentu przypisuje się do parametru przez jego pozycję na liście argumentów.

To ograniczenie ma na celu przezwyciężenie nazwanych argumentów. Nazwany argument pozwala określić nazwę parametru, do którego przypisana jest jego wartość. W tym przypadku kolejność argumentów nie ma już znaczenia. W ten sposób wymienione argumenty do pewnego stopnia podobne do tych wspomnianych wcześniejszych inicjujących obiektów, chociaż różnią się od nich z ich składni. Aby określić argument nazw, następna forma składni jest używana:

nazwa parametru: Wartość

Tutaj nazwa parametru Wskazuje nazwę parametru, do którego zostanie przekazana wartość. Oczywiście nazwę parametru musi oznaczyć nazwę prawidłowego parametru o zwanej metodzie.

Tagi: Parametry wiersz poleceń

Ustawienia linii poleceń.

C i - skompilowany język. Po montażu program jest plikiem wykonywalnym (nie uwzględniamy tworzenia bibliotek dynamicznych, kierowców itp.). Nasze programy są bardzo proste i nie zawierają bibliotek wykonawczych (biblioteki wykonawcze), więc można je przenieść do komputera z tym samym systemem operacyjnym (i podobną architekturą) i biegają tam.

Program podczas startupu może przyjmować parametry. Są argumentami głównej funkcji. Ogólny widok głównej funkcji

Void Główny (INT Argc, Char ** Argv) (...)

Pierwszy argument ArgC jest liczbą funkcji przenoszonych parametrów. Drugi argument jest tablicą ciągów - sama parametry są w rzeczywistości. Ponieważ parametry funkcji mogą być dowolne, są one one przesyłane jako ciągi, a sam program musi je demontować i prowadzić do pożądanego typu.

Pierwszy argument (Argv) jest zawsze nazwą programu. W takim przypadku nazwa jest wyświetlana w zależności od tego, gdzie działa program.

#Zawierać. #Zawierać. Void Główny (INT Argc, Char ** Argv) (Printf ("% S", Argv);)

Teraz naucz się trochę pracować z wierszem poleceń. Będzie potrzebny w celu przekazania argumentów naszego programu. Połączenie kluczy Win + R wywołuje okno "Uruchom". Wpisz CMD w nim i otworzysz wiersz poleceń. Możesz również znaleźć wyszukiwanie cmd.exe w menu Start. W UNIX system operacyjnyoch, możesz zadzwonić do programu "Terminal".

Nie będziemy studiować wielu zespołów. Tylko te, które będą potrzebne w pracy.

Standard dla wszystkich systemów operacyjnych, przejścia poleceń CD do żądanego folderu. Istnieją dwie zarezerwowane imię -. (Punkt) i .. (dwa punkty). Punkt jest nazwą bieżącego folderu.

Nigdzie nie idzie

Odwołaj się do folderu nadrzędnego

Przejście do folderu nadrzędnego

W przypadku przejścia na żądany adres CD jest zapisany. Na przykład musisz przejść do Windows do folderu C: Windows System32

CD C: Windows System32

W Linuksie Jeśli chcesz przejść do folderu / VAR / MySQL

CD / VAR / MYSQL

Jeśli ścieżka zawiera przestrzenie, jest napisane w podwójnych cytatach

CD "D: Dokumenty i ustawienia Prolog"

Terminal ma następujące przydatne funkcje: Jeśli naciśniesz strzałkę w górę, pojawi się poprzednie wykonane polecenie. Jeśli naciśniesz kartę, terminal spróbuje dodać ciąg do znanego jej polecenia lub dodać ścieżkę, wyłączając wszystkie foldery i pliki w bieżącym folderze.
Wybierz CD C:
Naciśnij kartę i zobacz, co się dzieje.

Kolejne ważne polecenie DIR na systemie Windows i LS na Linux, wyświetla zawartość bieżącego folderu do konsoli (folder, w którym jesteś obecnie)

Twój program zwrócił pełne imię i nazwisko. Przejdź do folderu, w którym znajduje się swój program i zobaczyć jego zawartość.


Teraz, po przełączeniu na nasz folder, możesz wykonać nasz program. Aby to zrobić, wpisz jej nazwisko.


Uwaga - nazwa się zmieniła. Ponieważ program jest wywoływany z jego folderu, jest wyświetlany w stosunku do nazwy. Teraz zmienisz program i sprawi, że wyjmuje wszystkie argumenty. którzy do niej przeniesienia.

#Zawierać. #Zawierać. Void Główny (INT Argc, Char ** Argv) (int I; dla (i \u003d 0; ja< argc; i++) { printf("%s\n", argv[i]); } }

Zbierz projekt. Przed montażem upewnij się, że program jest zamknięty. Teraz zadzwoń do programu, przekazując różne argumenty. Aby to zrobić, napisz nazwę programu i przez przestrzeń argumenta


Napiszmy teraz program, który otrzymuje dwa argumenty liczby i wyświetla swoją sumę

#Zawierać. #Zawierać. #Zawierać. Void Główny (INT Argc, Char ** Argv) (Int A, B; IF (ARGC! \u003d 3) (Printf ("Błąd: Znaleziono% d Argments. Potrzebuje dokładnie 2", argc-1); wyjście (1); ) A \u003d Atoi (Argv); B \u003d Atoi (Argv); Printf ("% D", A + B);)

Zbieramy i dzwonamy


W ten sposób większość programów działa. Kliknij na etykietę, nazywasz programem, do którego odnosi się. Większość programów zajmuje również różne argumenty. Na przykład możesz zadzwonić przeglądarka Firefox. Z linii poleceń i argumentów transferowych
Firefox.exe "www.mozilla.org" witryna "i natychmiast otworzy witryny w dwóch zakładkach na określonych adresach.

Wiele standardowych poleceń ma również parametry. Jest akceptowany w systemie Windows, które zaczynają od prostego wyglądu, w UNIX z minusem lub dwoma minusami. na przykład

Wyświetla tylko foldery i w terminalu Linux

LS -L wyświetla wszystkie pliki i foldery z atrybutami

Do oglądania dodatkowych polecenia Windows. Wybierz linię poleceń pomocy lub zobacz przewodnik (łatwo jest znaleźć w Internecie). W przypadku zespołów Linuksa i ich opcji, wiele więcej, a niektóre z nich są niezależnymi językami programowania, więc warto nauczyć się co najmniej minimalnego zestawu i ich opcji.

Podczas tworzenia aplikacji konsoli w języku programowania C ++, ciąg jest automatycznie tworzony bardzo podobny do tego:

Int Main (int Argc, Char * Argv) // Główny () Parametry funkcji

Ten ciąg jest nagłówkiem główna funkcja Główne (), parametry argań i Argv są ogłaszane w nawiasach. Jeśli więc uruchomisz program za pośrednictwem wiersza poleceń, możliwe jest przeniesienie wszelkich informacji do tego programu, dla tego i istnieją parametry ARGC i Argv. Parametr ARGC ma typ danych INT i zawiera liczbę parametrów przesyłanych do głównej funkcji. Co więcej, ARGC jest zawsze co najmniej 1, nawet gdy nie przesyłamy żadnych informacji, ponieważ pierwszy parametr jest nazwą funkcji. Parametr Argv jest tablicą wskaźników do ciągów. Poprzez wiersz polecenia tylko typ ciągu może być przesyłany. Wskaźniki i linie to dwa duże tematy tworzone oddzielne sekcje. Jest więc przez parametr Argv, a wszelkie informacje są przesyłane. Opracujemy program, który uruchomimy przez polecenie ciąg Windowsi przekazuj do niektórych informacji.

// argc_argv.cpp: Określa punkt wejściowy dla aplikacji konsoli. #Include "stdafx.h" #include Za pomocą przestrzeni nazw STD; Int main (int argc, char * argv) (jeśli (argc\u003e<< argv<

// Kod kodu :: Bloki

// kod Dev-C ++

// argc_argv.cpp: Określa punkt wejściowy dla aplikacji konsoli. #Zawierać. Za pomocą przestrzeni nazw STD; Int Main (int Argc, Char * Argv) (IF (ARGC\u003e 1) // Jeśli przekazujemy argumenty, Argc będzie większy niż 1 (w zależności od liczby argumentów) (Cout<< argv<

Po tym, jak będziesz shyled program, otwórz wiersz polecenia Windows i przeciągnij do okna wiersza poleceń naszego programu w oknie wiersza poleceń, pełna ścieżka do programu zostanie wyświetlona w wierszu poleceń (ale możesz przepisać ścieżkę do Program ręczny), a następnie kliknij WCHODZIĆ A program rozpocznie się (patrz rysunek 1).

Rysunek 1 - Ustawienia funkcji głównych

Ponieważ właśnie uruchomiliśmy program i nie przekazywaliśmy żadnych argumentów, pojawiła się argumenty, a nie argumenty. Rysunek 2 przedstawia początek tego samego programu za pośrednictwem wiersza poleceń, ale już z transmisją otwartego argumentu.

Rysunek 2 - Parametry główne funkcji

Argument to słowo otwarte, jak widać na zdjęciu, to słowo pojawiło się na ekranie. Natychmiast przesyłasz kilka parametrów, oddzielając ich ze sobą. Jeśli musisz przekazać parametr składający się z kilku słów, należy je podjąć podwójne cytaty, a następnie te słowa będą uważane za jeden parametr. Na przykład rysunek przedstawia uruchomienie programu, z przeniesieniem argumentu składającego się z dwóch słów - działa.

Rysunek 3 - Parametry funkcji głównych

A jeśli usuniesz cytaty. Zobaczę tylko to słowo. Jeśli nie planujesz przesyłania żadnych informacji po uruchomieniu programu, możesz usunąć argumenty w funkcji głównej (), można również zmienić nazwy argumentów. Czasami istnieje modyfikacja parametrów ARGC i ARGV, ale wszystko zależy od rodzaju utworzenia aplikacji lub środowiska programistycznego.

Dzięki zautomatyzowanemu utworzeniu aplikacji konsoli w języku programowania C ++, główna funkcja jest automatycznie tworzona bardzo podobna do:

int main (int argc, char * argv)
{…}

Nagłówek funkcji zawiera sygnaturę głównej funkcji głównej () z argumentami argumentami i argvem.
Jeśli uruchomisz program za pośrednictwem wiersza poleceń, możliwe jest przeniesienie wszelkich informacji do tego programu. W tym celu istnieją argumenty linii poleceń Argc i Argv.
Parametr ARGC ma typ INT i zawiera liczbę parametrów przesyłanych do głównej funkcji. Co więcej, ARGC jest zawsze co najmniej 1, nawet gdy główne funkcje nie są przesyłane przez żadnych informacji, ponieważ nazwa aplikacji jest uważana za pierwszy parametr.
Parametr Argv jest tablicą wskaźników do ciągów. Poprzez wiersz polecenia tylko typ ciągu może być przesyłany.

Po uruchomieniu programu za pośrednictwem linii poleceń systemu Windows można przesyłać niektóre informacje. W takim przypadku linia poleceń będzie wyglądać:
Dysk: ścieżka Name.exe Argument1 Argument2 ...

Argumenty wiersza poleceń są oddzielone przez jedną lub więcej przestrzeni.

Argument Argv zawiera pełną nazwę aplikacji:

#Zawierać.
za pomocą przestrzeni nazw STD;

cout.<< argv << endl;

Powrót 0;
}

Wynik egzekucji

Przykład: obliczanie pracy dwóch liczb całkowitych
Program korzysta z funkcji konwersji ciągów do integera Strtoint () stąd.

#Zawierać.
za pomocą przestrzeni nazw STD;
int strtoint (char * s) (...)
int main (int argc, char * argv) (

Int a \u003d 0, b \u003d 0;

Jeśli (argc\u003e 1)

a \u003d strtoint (Arvv);

Jeśli (argc\u003e 2)

b \u003d strtoint (argv);

cout.<< a <<«*» << b << «= « << a*b << endl;

Powrót 0;
}

Uruchamianie programu jest wykonywane jako

Wynik egzekucji

Debugowanie programu z argumentami linii poleceń

Aby przenieść argumenty wiersza poleceń podczas debugowania programu, musisz skontaktować się z menu Nieruchomości Projekt.


Na karcie. Właściwości konfiguracji -\u003e Debugowanie wybierać Zespół argumentów. I poproś ich wartości.

Po uruchomieniu programu w trybie debugowania wprowadzone argumenty będą postrzegane przez program jako argumenty wiersza poleceń.

Kiedyś zainteresowany zawartość głównego procesu głównego procesu w Linuksie. Przeprowadził pewne ankiety, a teraz przedstawiam ci wynik.

Główna funkcja Opis Opcje:
1. int main ()
2. int main (int argc, char ** argv)
3. int main (int argc, char ** argv, char ** env)
4. int Main (int Argc, Char ** Argv, Char ** Env, Elfw (AUXV_T) AUXV)
5. int Main (int Argc, Char ** Argv, Char ** Env, Char ** Apple)

Argc - liczba parametrów
Argv - zero-terminal tablica wskaźników do strun parametrów wiersza poleceń
ENV - Zero-terminal tablica wskaźników do rzędów zmiennych środowiskowych. Każda linia w formacie nazwa \u003d wartość
Auxv - tablica wartości pomocniczej (dostępna tylko dla PowerPC)
Apple - ścieżka do pliku wykonywalnego (w MacOS i Darwin)
Wektor pomocniczy - tablica z różnymi dodatkowymi informacjami, takimi jak efektywny identyfikator użytkownika, znak trochę nieco, rozmiar strony pamięci itp.

Rozmiar segmentu stosu można spojrzeć w pliku map:
CAT / PROC / 10918 / Maps

7FFFFFA3000-7FFFFFFFFF000 RW-P 00000000 00:00 0

Zanim bootloader jest kontrolowany w Main, inicjuje zawartość tablic parametrów wiersza poleceń, zmiennych środowiskowych, wektora pomocniczego.
Po inicjalizacji górna część stosu wygląda na to dla wersji 64-bitowej.
Starszy adres z góry.

1. 0x7ffffff000. Najlepszy punkt segmentu stosu. Odwołanie powoduje Segfault.
0x7fffffff10f8. ZERO nieważny * 8 0x00 "
2. Nazwa pliku. Zwęglać. 1+ "/Tmp/a.out"
Zwęglać. 1 0x00.
...
ENV. Zwęglać. 1 0x00.
...
Zwęglać. 1 0x00.
3. 0x7ffffffe5e0. ENV. Zwęglać. 1 ..
Zwęglać. 1 0x00.
...
Argv. Zwęglać. 1 0x00.
...
Zwęglać. 1 0x00.
4. 0x7ffffffe5be. Argv. Zwęglać. 1+ "/Tmp/a.out"
5. Tablica losowa
6. Dane dla AUXV. nieważny * 48"
At_null. Elf64_auxv_t. 16 {0,0}
...
Auxv. Elf64_auxv_t. 16
7. auxv. Elf64_auxv_t. 16 Np.: (0x0e, 0x3e8)
ZERO nieważny * 8 0x00.
...
eNV. Char * 8
8. 0x7fffffe308. ENV. Char * 8 0x7ffffffe5e0.
ZERO nieważny * 8 0x00.
...
argv. Char * 8
9. 0x7ffffffe2f8. Argv. Char * 8 0x7ffffffe5be.
10. 0x7ffffffe2f0. argc. długa int. 8" liczba argumentów + 1
11. Lokalne zmienne i argumenty, funkcje spowodowane głównym
12. Zmienne lokalne główne.
13. 0x7fffffe1fc. argc. int. 4 liczba argumentów + 1
0x7ffffffe1f0. argv. char ** 8 0x7ffffffe2f8.
0x7ffffffe1e8. eNV. char ** 8 0x7fffffe308.
14. Zmienne funkcji lokalnych

"- Nie znalazłem opisów pól w dokumentach, ale wysypisko jest wyraźnie widoczne.

W przypadku 32 bitów nie sprawdził, ale najprawdopodobniej wystarczy, aby podzielić wymiary dla dwóch.

1. Odwołaj się do adresów powyżej najlepszego punktu, powoduje Segfault.
2. Ciąg zawierający ścieżkę do pliku wykonywalnego.
3. Tablica wierszy z zmiennymi środowiskowymi
4. Tablica ciągów z parametrami wiersza poleceń
5. Grafika o losowej długości. Jego wybór może być wyłączony przez polecenia.
SYSTL -W Kernel.Randomize_va_space \u003d 0
Echo 0\u003e / proc / sys / jerl / randomize_va_space
6. Dane dla wektora pomocniczego (na przykład linii "X86_64")
7. wektor pomocniczy. Czytaj więcej poniżej.
8. Null-Terminal tablica wskaźników na Wierszach zmiennych środowiskowych
9. Zero Terminal tablica wskaźników do strun parametrów wiersza poleceń
10. Słowo kosiarki zawierające liczbę parametrów wiersza poleceń (jeden z argumentów "starszych" funkcji, zob. Pkt 11)
11. Zmienne i argumenty klauzuli, funkcje wezwane do głównego (_start, __ libc_start_main ..)
12. Przenosi, zadeklarowany w Main
13. Uboczne głównych funkcji
14. Ruch i argumenty funkcji lokalnych.

Wektor pomocniczy
W przypadku I386 i X86_64 nie można uzyskać adresu pierwszego elementu wektora pomocniczego, ale zawartość tego wektora można uzyskać w inny sposób. Jednym z nich jest odnosić się do obszaru pamięci u podstaw tablicy wskaźników do wierszy zmiennych środowiskowych.
To powinno wyglądać tak:
#Zawierać. #Zawierać. Int Main (int Argc, Char ** Argv, Char ** Env) (ELF64_AUXV_T * AUXV; // X86_64 // ELF32_AUXV_T * AUXV; // I386 WHILE (* ENV ++! \u003d NULL); // Szukamy Początek wektora pomocniczego dla (AUXV \u003d (ELF64_AUXV_T *) ENV; AUXV-\u003e A_TYPE! \u003d AT_NULL; AUXV ++) (Printf ("Addr:% P Typ:% LX to: 0x% LX N", AUXV , Auxv-\u003e A_Type, Auxv-\u003e A_un AUXV) - (void *) (& Auxv) \u003d% p-% p \u003d% ld n ", (void *) (* Argv), (void *) AUXV, (void *) (* Argv) - (pustka *) Auxv, (void *) (ARGV), (void *) (& Auxv), (void *) (Argv) - (void *) (& AUXV)); Printf ("Nr Argc Kopiuj:% d n ", * ((int *) (Argv - 1))); zwrot 0;)
ELF (32.64) struktury _auxv_t opisano w /usr/include/elf.h. Funkcje Filenge w Linux-Kernel / FS / Binfmt_elf.c

Drugi sposób, aby uzyskać zawartość wektora:
Hexdump / proc / self / auxv

Najbardziej pamiętny widok jest uzyskiwany przez ustawienie zmiennej środowiskowej LD_SHOW_AUXV.

Ld_show_auxv \u003d 1 ls
AT_HWCAP: Funkcje procesora BFEBFFFF //
At_pagesez: 4096 // Rozmiar strony pamięci
AT_CLKTCK: 100 // Times częstotliwości aktualizacji ()
AT_PHDR: 0x400040 // Informacje o nagłówkach
At_phent: 56.
At_phnum: 9.
AT_BASE: 0x7FD00B5BC000 // Adres interpretera, mam na myśli LD.SO
At_flags: 0x0.
At_entry: 0x402490 // punkt wejścia w programie
AT_UID: 1000 // Identyfikatory użytkowników i grupy
At_euid: 1000 // Nominal i wydajny
At_gid: 1000.
At_egid: 1000.
At_Secure: 0 // uruchamia się flaga
At_random: 0x7FFF30BDC809 // Adres 16 losowych bajtów,
wygenerowane na uruchomieniu
At_sysinfo_dr: 0x7fff30bff000 // wskaźnik do strony używanej do
// Wywołania systemowe.
At_execfn: / bin / ls
AT_PLATFORM: X86_64.
Po lewej - nazwa zmiennej, prawa do prawa. Wszystkie możliwe nazwy zmiennych i ich opis mogą być wykreślać w pliku Elf.h. (Stałych z prefiksem AT_)

Powrót z głównego ()
Po zainicjowaniu kontekstu procesu sterowanie jest przesyłane nie w MAIN (), ale do funkcji _Start ().
Główny () przyczyny od __libc_start_main. Ta ostatnia funkcja ma interesującą funkcję - jest przekazywany do funkcji funkcji, która musi być wykonana po głównym (). A ten wskaźnik jest transmitowany naturalnie przez stos.
Ogólnie rzecz biorąc, argumenty __libc_start_main są oglądane zgodnie z plikiem Glibc-2.11 / SYSDEPS / IA64 / ELF / Start.s
/*
* Argumenty dla __Libc_start_main:
* Out0: Main
* Out1: Argc
* Out2: Argv
* OUT3: init
* OUT4: Funkcja FINI // nazywana po głównym
* OUT5: rtld_fini
* Out6: Stack_end
*/
Te. Aby uzyskać adres wskaźnika FINI, musisz przesunąć na dwa słowa silnika z ostatniej zmiennej lokalnej głównej.
Tak się stało (wydajność zależy od wersji kompilatora):
#Zawierać. void ** RET; void * Leve; void foo () (void (* boo) (void); // wskaźnik do funkcji printf ("stos przepisywania! n"); boo \u003d (void (*) (void)) zostawić; boo (); // FINI ()) Int Główny (INT Argc, Char * Argv, Char * ENVP) (niepodpisany długi Int Mark \u003d 0xBFBFBFBFBFBFBFBF; // Tag, z którego będziemy pracować RET \u003d (void **) (& Mark + 2); // Usuń funkcje adresu spowodowane po zakończeniu (Fini) Laut \u003d * Ret; // Zapamiętaj * RET \u003d (void *) foo; // powrót poprawek 0; // wywołanie funkcji foo ())

Mam nadzieję, że to było interesujące.
Powodzenia

Dzięki użytkownikowi Xeor za użyteczne księgowanie.

Dzwon.

Są ci, którzy przeczytali tę wiadomość przed tobą.
Subskrybuj odbieranie artykułów świeżych.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać dzwonek
Bez spamu