2014-10-27 11 views
17

Nie mówię o obiektu w C++ ani obiektywne C próbuję zrozumieć, co „obiekt” oznacza w kontekście this text:Co to jest obiekt w C?

Jeśli deklaracja identyfikatora plików Zakres przedmiotu lub funkcja zawiera specyfikator klasy pamięcistatic, identyfikator ma wewnętrzne powiązanie. W przeciwnym razie identyfikator ma połączenie zewnętrzne. Zobacz Storage Classes, aby omówić specyfikację klasy pamięci nieterminalną.

W jednej jednostce tłumaczeniowej każda instancja identyfikatora z wewnętrznym łącznikiem 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++.

Przeczytałem również: here i here.

+1

Należy zauważyć, ż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

+0

Prawdopodobnie najlepiej wyjaśnić tutaj: http://stackoverflow.com/questions/1564359/object-code-linking-time-in-c-language – Rob

+0

@Rob: to nie ma nic wspólnego z tym pytaniem. – Mat

Odpowiedz

23

Określenie Przedmiotem jest określona przez sekcję C11 standardowym 3,15:

obiektu

obszar pamięci danych w środowisku wykonawczym, którego zawartość może stanowić wartości

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

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

+6

Odkładając na bok prawdopodobnie lepiej odczytywać bezpośrednio ze standardowego lub standardowego szkicu zamiast z haseł googlowania. [Zobacz tutaj] (http://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents) dla linków. –

+0

Nie zgadzam się z twoją interpretacją, chociaż mówię z niewyraźną 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. EDYCJA: http://stackoverflow.com/questions/1564359/object-code-linking-time-in-c-language – Rob

+0

Więc w prostym angielskim obiekt może być wszystkim: zmiennymi, funkcjami, strukturami? – user3646717