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.


1
Czy gwarantuje się, że wartość char ustawiona na CHAR_MAX ma być zawijana na CHAR_MIN?
Mój kod: #include <stdio.h> #include <limits.h> int main() { char c = CHAR_MAX; c += 1; printf("CHAR_MIN=%d CHAR_MAX=%d c=%d (%c)\n", CHAR_MIN, CHAR_MAX, c, c); } Wynik: CHAR_MIN=-128 CHAR_MAX=127 c=-128 () Widzimy, że kiedy zwiększamy charzestaw zmiennych do CHAR_MAX, zawija się ono do CHAR_MIN. Czy to zachowanie jest gwarantowane? A może …

3
Niespójne obcięcie wyrażeń liczb całkowitych bez znaku między C ++ i C w różnych kompilatorach
Edycja 2 : Debugowałem dziwny błąd testu, gdy funkcja wcześniej znajdująca się w pliku źródłowym C ++, ale przeniesiona do pliku C dosłownie, zaczęła zwracać nieprawidłowe wyniki. Poniższe MVE pozwala odtworzyć problem z GCC. Jednak gdy kaprysem skompilowałem przykład z Clangiem (a później z VS), otrzymałem inny wynik! Nie mogę …

1
C11 Atomic Acquire / Release i x86_64 brak spójności ładowania / przechowywania?
Walczę z sekcją 5.1.2.4 normy C11, w szczególności semantyką wydania / nabycia. Zauważam, że https://preshing.com/20120913/acquire-and-release-semantics/ (między innymi) stwierdza, że: ... Semantyka wydania zapobiega zmianie kolejności pamięci wydania-zapisu przy każdej operacji odczytu lub zapisu, która poprzedza ją w kolejności programów. Tak więc dla następujących: typedef struct test_struct { _Atomic(bool) ready ; …


4
Po co zwracać NULL z main ()?
Czasami widzę kodery, które wykorzystują NULLjako wartość zwracaną main()w programach C i C ++, na przykład coś takiego: #include <stdio.h> int main() { printf("HelloWorld!"); return NULL; } Kiedy kompiluję ten `kod z gcc, pojawia się ostrzeżenie: ostrzeżenie: return tworzy liczbę całkowitą ze wskaźnika bez rzutowania [-Wint-konwersji] co jest uzasadnione, ponieważ …
10 c++  c  null  return  return-value 

2
Czy moduł wstępny L2 HW jest naprawdę pomocny?
Jestem na Whisky Lake i7-8565U i analizuję liczniki perf oraz czas na skopiowanie 512 KiB danych (dwa razy więcej niż rozmiar pamięci podręcznej L2) i napotkałem pewne nieporozumienia dotyczące pracy modułu pobierania wstępnego L2 HW. W Intel Manual Vol.4 MSR jest MSR, 0x1A4którego bit 0 służy do kontrolowania modułu wstępnego …


5
Dynamiczne linkowanie - Linux vs. Windows
Pod Windows, kiedy kompiluję kod C / C ++ w projekcie DLL w MSVC, otrzymuję 2 pliki: MyDll.dll MyDll.lib gdzie, o ile rozumiem, MyDll.libzawiera pewnego rodzaju tabelę wskaźników wskazującą lokalizacje funkcji w bibliotece dll. Podczas korzystania z tej biblioteki DLL, powiedzmy w pliku exe, MyDll.libjest ona osadzana w pliku exe …




3
Jakie są szczegóły definicji ciągu w C?
Mam odpowiedzieć na pytanie o pracę domową dla jednej z moich klas. W szczególności mam powiedzieć, czy niektóre tablice w C są uważane za łańcuchy, czy nie. Na podstawie tego artykułu ( https://www.geeksforgeeks.org/strings-in-c-2/ ) wiem, że ciągi znaków to tablica znaków z zakończeniem zerowym na końcu. Moje główne zawieszenie jest …

1
Konwersja do void ** w różnych kompilatorach
Uruchomiłem następujący kod za pośrednictwem różnych kompilatorów: int main() { float **a; void **b; b = a; } Z tego co udało mi się zebrać, void **to nie ogólna wskazówka co oznacza, że każdy z innego wskaźnika konwersji nie powinien skompilować lub przynajmniej rzucić ostrzeżenie. Oto moje wyniki (wszystkie wykonane …
9 c++  c  cuda 

1
Zapobiegaj procesowi otwierania nowego deskryptora pliku w systemie Linux, ale zezwalaj na odbieranie deskryptorów plików przez gniazda
Obecnie pracuję nad projektem, w którym mam proces nadrzędny, który konfiguruje parę gniazd, rozwidla, a następnie używa tej pary gniazd do komunikacji. Dziecko, jeśli chce otworzyć plik (lub dowolny inny zasób oparty na deskryptorze pliku), powinno zawsze udać się do elementu nadrzędnego, zażądać zasobu i pobrać fdgo za pośrednictwem pary …
9 c  linux  system-calls 

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.