Pytanie Co to jest obiekt w C?


Nie mówię o obiekcie w C ++ ani o Objective C. Próbuję zrozumieć, co oznacza "obiekt" w kontekście ten tekst:

Jeśli deklaracja identyfikatora zakresu pliku dla obiektu lub funkcji zawiera znak specyfikator klasy pamięci  statyczny, identyfikator ma wewnętrzne powiązanie. W przeciwnym razie identyfikator ma połączenie zewnętrzne. Widzieć Klasy pamięci do dyskusji na temat specyfikator klasy pamięci nieterminalny.

W obrębie jednej jednostki tłumaczeniowej każda instancja identyfikatora z wewnętrznym połączeniem oznacza ten sam identyfikator lub funkcję. Wewnętrznie połączone identyfikatory są unikalne dla jednostki tłumaczeniowej.

Widziałem już słowo "obiekt" w innych tematach C. Ale kiedy Google to, mam tylko odniesienia do C ++.

Ja też to czytam tutaj i tutaj.


18
2017-10-27 04:01


pochodzenie


Zauważ, że definicja obiektu w standardzie C ++ również nie ma nic wspólnego z OOP. "Obiekt to region pamięci"(C ++ 11 draft n3290 §1.8). - Mat
Prawdopodobnie najlepiej wyjaśnić tutaj: stackoverflow.com/questions/1564359/... - Rob
@Rob: to nie ma nic wspólnego z tym pytaniem. - Mat


Odpowiedzi:


Termin obiekt jest określony przez standard C11 w sekcji 3.15:

obiekt

region przechowywania danych w środowisku wykonawczym, którego zawartość może reprezentować   wartości

Tekst na twoim linku MSDN jest wklejony (bez podania źródła!) Z sekcji 6.2.2 / 3 standardu C11.

Aby zinterpretować tę definicję, region przechowywania danych jest kluczową częścią. Wszystkie zmienne są obiektami, a obiekty mogą być również przydzielane przez malloc.


24
2017-10-27 04:27



Na marginesie prawdopodobnie lepiej odczytywać bezpośrednio ze standardowego lub standardowego szkicu zamiast haseł googlowania. Spójrz tutaj dla linków. - M.M
Nie zgadzam się z twoją interpretacją, chociaż mówię z mglistą pamięcią i nie sprawdzam tutaj własnego komentarza. Kod C zostanie wkompilowany w kod zespołu, który ostatecznie przejdzie do kodu obiektowego, a następnie do kodu maszyny. Nie bierz moich kroków dla kodu obiektowego dosłownie, ale nie wierzę, że zmienne są obiektami nie przydzielonymi przez malloc. EDYTOWAĆ: stackoverflow.com/questions/1564359/... - Rob
Więc w prostym angielskim obiekt może być wszystkim: zmiennymi, funkcjami, strukturami? - user3646717
@Rob twój link mówi o "kodzie obiektowym" lub "plikach obiektowych" (jest to zupełnie inne znaczenie słowa "obiekt" niż użycie w tym pytaniu) - M.M
@ user3646717 wywołujemy zmienne zmienne. To, co właśnie powiedziałeś, jest jak powiedzenie "jeśli koty są zwierzętami, dlaczego po prostu nie nazywamy ich kotami?" - M.M