Pytania otagowane jako c

C jest językiem programowania ogólnego przeznaczenia używanym do programowania systemu (system operacyjny i wbudowane), bibliotek, gier i platform. Tego znacznika należy używać z ogólnymi pytaniami dotyczącymi języka C, zgodnie z definicją w normie ISO 9899 (najnowsza wersja, 9899: 2018, o ile nie określono inaczej - także znaczniki specyficzne dla wersji za pomocą c89, c99, c11 itd.). C różni się od C ++ i nie należy go łączyć ze znacznikiem C ++ bez uzasadnionego powodu.

7
Egzotyczne architektury, o które dbają komitety normalizacyjne
Wiem, że standardy C i C ++ pozostawiają wiele aspektów implementacji języka tylko dlatego, że gdyby istniała architektura o innych cechach, byłoby bardzo trudne lub niemożliwe napisanie dla niej kompilatora zgodnego ze standardami. Wiem, że 40 lat temu każdy komputer miał swoją własną, unikalną specyfikację. Jednak nie znam żadnej architektury …
154 c++  c  architecture 

5
Wyciek wciąż osiągalny wykryty przez Valgrinda
Wszystkie funkcje wymienione w tym bloku są funkcjami bibliotecznymi. Jak mogę naprawić ten wyciek pamięci? Znajduje się w kategorii „ Nadal osiągalne ”. (Są jeszcze 4, które są bardzo podobne, ale o różnych rozmiarach) 630 bytes in 1 blocks are still reachable in loss record 5 of 5 at 0x4004F1B: …
154 c  pthreads  valgrind 


6
NSLoguj nazwę metody za pomocą Objective-C w telefonie iPhone
Obecnie sami definiujemy rozszerzony mechanizm dziennika, aby wydrukować nazwę klasy i numer linii źródłowej dziennika. #define NCLog(s, ...) NSLog(@"<%@:%d> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], \ __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__]) Na przykład, kiedy dzwonię do NCLog (@ "Hello world"); Wynik będzie: <ApplicationDelegate:10>Hello world Teraz chcę również wylogować się z nazwy metody, takiej …

11
~ x + ~ y == ~ (x + y) jest zawsze fałszywe?
Czy ten kod zawsze daje wynik fałszywy? Obie zmienne są liczbami int ze znakiem uzupełnienia do dwóch. ~x + ~y == ~(x + y) Wydaje mi się, że powinna istnieć liczba spełniająca warunki. Próbowałem sprawdzić liczby pomiędzy -5000i, 5000ale nigdy nie osiągnąłem równości. Czy istnieje sposób na utworzenie równania, aby …

9
Czy w C klamry działają jak ramka stosu?
Jeśli utworzę zmienną w nowym zestawie nawiasów klamrowych, to czy ta zmienna wyskoczyła ze stosu w nawiasie zamykającym, czy też zawiesza się do końca funkcji? Na przykład: void foo() { int c[100]; { int d[200]; } //code that takes a while return; } Będzie dzajmować pamięć podczas code that takes …
153 c  memory  stack 

9
Co to jest „callback” w C i jak są one realizowane?
Z czytania, którego dokonałem, Core Audio w dużym stopniu opiera się na callbackach (i C ++, ale to już inna historia). Rozumiem koncepcję (rodzaj) ustawiania funkcji, która jest wielokrotnie wywoływana przez inną funkcję w celu wykonania zadania. Po prostu nie rozumiem, jak się konfigurują i jak faktycznie działają. Wszelkie przykłady …
153 c  callback 

14
Sprawdzanie wskaźnika NULL w C / C ++ [zamknięte]
Zamknięte . To pytanie jest oparte na opiniach . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć, podając fakty i cytaty, edytując ten post . Zamknięte 5 lat temu . Popraw to pytanie W ostatnim przeglądzie kodu współtwórca próbuje wymusić, aby wszystkie …

13
Jakie narzędzia są dostępne do programowania funkcjonalnego w C?
Ostatnio dużo myślałem o tym, jak zrobić programowanie funkcjonalne w C ( nie C ++). Oczywiście C jest językiem proceduralnym i nie obsługuje natywnie programowania funkcjonalnego. Czy są jakieś rozszerzenia kompilatora / języka, które dodają pewne konstrukcje programowania funkcjonalnego do języka? GCC udostępnia zagnieżdżone funkcje jako rozszerzenie języka; funkcje zagnieżdżone …

13
Czy num ++ może być atomowe dla „int num”?
Ogólnie rzecz biorąc, for int num, num++(lub ++num), jako operacja odczytu-modyfikacji-zapisu, nie jest atomowa . Ale często widzę kompilatory, na przykład GCC , generują dla niego następujący kod ( spróbuj tutaj ): Ponieważ wiersz 5, który odpowiada, num++jest jedną instrukcją, czy możemy wywnioskować, że w tym przypadku num++ jest atomowa …

8
Zwracanie tablicy przy użyciu języka C
Jestem stosunkowo nowy w C i potrzebuję pomocy w metodach radzenia sobie z tablicami. Pochodząc z programowania w Javie, jestem przyzwyczajony do mówienia int [] method()w celu zwrócenia tablicy. Jednak odkryłem, że w C musisz używać wskaźników do tablic, kiedy je zwracasz. Będąc nowym programistą, naprawdę w ogóle tego nie …
153 c  arrays  pointers  char 

2
Jak dwukrotnie połączyć z preprocesorem C i rozwinąć makro, jak w „arg ## _ ## MACRO”?
Próbuję napisać program, w którym nazwy niektórych funkcji są zależne od wartości określonej zmiennej makra z makrem takim jak to: #define VARIABLE 3 #define NAME(fun) fun ## _ ## VARIABLE int NAME(some_function)(int a); Niestety, makro NAME()zamienia to na int some_function_VARIABLE(int a); zamiast int some_function_3(int a); więc jest to zdecydowanie niewłaściwy …

4
Co oznacza „#define _GNU_SOURCE”?
Dzisiaj musiałem skorzystać z basename()funkcji, a man 3 basename( tutaj ) dał mi dziwną wiadomość: Uwagi Istnieją dwie różne wersje basename () - wersja POSIX opisana powyżej oraz wersja GNU , którą otrzymuje się po #define _GNU_SOURCE #include <string.h> Zastanawiam się, co to #define _GNU_SOURCEoznacza: czy jest to skażenie kodu, …
152 c  posix  gnu 

22
Obsługa błędów w kodzie C.
Co uważasz za „najlepszą praktykę”, jeśli chodzi o obsługę błędów w spójny sposób w bibliotece C. Są dwa sposoby, o których myślałem: Zawsze zwracaj kod błędu. Typowa funkcja wyglądałaby tak: MYAPI_ERROR getObjectSize(MYAPIHandle h, int* returnedSize); Zawsze zapewniają podejście do wskaźnika błędu: int getObjectSize(MYAPIHandle h, MYAPI_ERROR* returnedError); Korzystając z pierwszego podejścia, …
152 c  error-handling 


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.