Czy funkcja ma jakąś klasę pamięci w języku C?Czy funkcja ma jakąś klasę pamięci w języku C?
Odpowiedz
Odpowiedź brzmi: nie. Według http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (projekt C99) i http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (projekt C11):
6.2.4 Przechowywanie trwania obiektów
1 Obiekt ma czas trwania przechowywania który określa jej żywotność.
Funkcje nie są obiektami, więc nie mają pamięci.
6.2.2 wiązań identyfikatorów
3 Jeśli deklaracja identyfikator pliku zakres dla obiektu lub funkcji zawiera magazynowania klasy specyfikator
static
identyfikator ma wewnętrzny łącznik.
Oznacza to, że static
zastosowany do funkcji wpływa na jej powiązanie (nie ma pamięci, do której mógłby się zastosować).
Standard C nie formalnie definiuje znaczenia klasy przechowywania.
To nie definiuje, czym jest "magazynowanie klasy specifier" --- to jest to jeden z kluczowych typedef
, extern
, static
, _Thread_local
, auto
i register
.
Funkcje można deklarować ze specyfikatorami klasy pamięci extern
lub static
.
Standardowo robi obiektów wzmianka o „klasie pamięci” w kilku miejscach, na przykład
Jeśli obiekt tablica ma zarejestrować klasę pamięci, zachowanie jest niezdefiniowane
ale nigdy nie jest zdefiniowana jaka jest klasa pamięci obiektu. Można zasadnie założyć, że jest to słowo kluczowe specyfikatora klasy pamięci, które pojawia się w jednej z deklaracji, ale pozostaje niejasne, co się dzieje, jeśli niektóre deklaracje tego samego obiektu mają specyfikator klasy pamięci, a inne nie. Nigdy też nie jest zdefiniowana klasa pamięci obiektu, który nie ma deklaracji ze specyfikatorem klasy pamięci.
Wydaje się, że należy unikać mówienia o klasach przechowywania obiektów lub funkcji w ogóle, a zamiast używać podobnych pojęć Czas składowania i powiązania które są precyzyjnie określone przez normę. W razie potrzeby użyj zwrotów takich jak "specyfikator klasy pamięci X pojawia się w deklaracji", ale nie "obiekt/funkcja ma klasę pamięci X".
Podoba mi się Twoja odpowiedź ... –
Moja interpretacja: "ma klasę pamięci rejestru" oznacza "została zadeklarowana ze specyfikatorem klasy pamięci rejestru", inne wystąpienia "posiadające klasę pamięci" w standardzie są niedbałymi sformułowaniami, które powinny zostać poprawione, aby nie wspominać "klasy pamięci", ale zamiar jest jasny w każdym przypadku –
- 1. Dynamicznie skomponuj klasę w języku C#
- 2. Wyrównanie pamięci w języku C++
- 3. Interfejs implementujący anonimową klasę w języku C#?
- 4. Czy istnieje przenośny sposób kopiowania bloku pamięci w języku C#?
- 5. Sprawdź, czy funkcja jest w języku C lub Lua zaimplementowana
- 6. Czy funkcja konstruktora może być przyjacielem w języku C++?
- 7. Czy istnieje już funkcja warunkowego Zip w języku C#?
- 8. Jak zadeklarować klasę w języku C#, aby móc łańcuch metod?
- 9. Czy Ruby ma odpowiednik TimeSpan w języku C#?
- 10. Czy można określić w czasie wykonywania wskaźnik wskazuje na klasę C++ lub na klasę Objective-C?
- 11. kiedy funkcja zwraca odwołanie w języku C++
- 12. Czy Async.StartChild ma wyciek pamięci?
- 13. Jak zaimplementować klasę abstrakcyjną w języku F #?
- 14. jQuery: Sprawdź, czy obiekt ma klasę
- 15. Dlaczego nie ma funkcji String.IsNumeric w języku C#
- 16. Czy ta funkcja C# ma nazwę i co robi?
- 17. Czy możemy utworzyć publiczną statyczną klasę abstrakcji w języku Java?
- 18. Angular2 Wykryj, czy element w widoku szablonu ma klasę
- 19. W języku Ruby, jak działa funkcja Coerce()?
- 20. Czy kolejność łączenia ma znaczenie w języku SQL?
- 21. Czy można napisać klasę Ping w języku C#, która będzie działać w środowisku Windows 8 Metro?
- 22. Uwalnianie pamięci w języku Python
- 23. Czy funkcja xslt ma funkcję split()?
- 24. Sprawdź, czy funkcja Haskella ma wyciek przestrzeni.
- 25. Read-Only listy w języku C#
- 26. Czy funkcja filtrowania lodash ma kontekst?
- 27. Przeglądanie historii pobierania pamięci w języku C# (VS2015)
- 28. Czy funkcja wirtualna ma zasadniczo definicję?
- 29. W języku C++, funkcja wektorowa push_back zwiększy rozmiar pustej tablicy?
- 30. Czy C# ma odpowiednik pakietu #pragma w C++?
Masz na myśli to? http://www.9wy.net/onlinebook/CPrimerPlus5/ch12lev1sec1.html –