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.

4
Prosty przykład w C wykonywania HTTP POST i wykorzystania odpowiedzi
Chciałbym stworzyć bardzo prostą aplikację w C, która wysyła post HTTP. Będzie to wymagało kilku parametrów i użyje ich do skonstruowania adresu URL. Chciałbym tylko wykonać prosty HTTP POST i uzyskać odpowiedź bez użycia curl (biblioteki nie są i nie zostaną zainstalowane na maszynie, która musi działać). Pseudo kod: Przetwórz …
90 c  http  http-post 

3
Gdzie można znaleźć standardy C89 / C90 w formacie PDF?
Szukam darmowej wersji standardu C89 / C90 , ale nie mogę jej nigdzie znaleźć! Dlaczego tak trudno go znaleźć? Standardy C99 i C11 są bardzo łatwe do uzyskania w Internecie. Nawet w pytaniach dotyczących przepełnienia stosu Gdzie znajdę aktualne dokumenty w standardzie C lub C ++? a Standard C, „Uzyskiwanie …
90 c  ansi  c89 

4
Dlaczego memmove jest szybsze niż memcpy?
Badam punkty aktywne wydajności w aplikacji, która spędza 50% czasu w memmove (3). Aplikacja wstawia miliony 4-bajtowych liczb całkowitych do posortowanych tablic i używa memmove do przesunięcia danych „w prawo” w celu zwolnienia miejsca na wstawioną wartość. Spodziewałem się, że kopiowanie pamięci będzie niezwykle szybkie i byłem zaskoczony, że tak …
89 c++  c  performance  memory 

9
Dlaczego nie działa +++++ b?
int main () { int a = 5,b = 2; printf("%d",a+++++b); return 0; } Ten kod powoduje następujący błąd: błąd: wartość l wymagana jako operand inkrementacji Ale jeśli wstawię spacje w całym a++ +i ++b, to działa dobrze. int main () { int a = 5,b = 2; printf("%d",a++ + …
89 c  lvalue 

7
Jak jądro Linuksa może się skompilować?
Nie do końca rozumiem proces kompilacji jądra Linuksa, kiedy instaluję Linuksa na moim komputerze. Oto kilka rzeczy, które mnie zdezorientowały: Jądro jest napisane w C, ale w jaki sposób jądro zostało skompilowane bez zainstalowanego kompilatora? Jeśli kompilator C jest zainstalowany na moim komputerze przed skompilowaniem jądra, w jaki sposób sam …

3
Czym dokładnie jest zasada „jak gdyby”?
Jak mówi tytuł, Czym dokładnie jest zasada „jak gdyby”? Typowa odpowiedź, jaką można uzyskać, to: Reguła zezwalająca na wszelkie transformacje kodu, które nie zmieniają obserwowalnego zachowania programu Od czasu do czasu otrzymujemy zachowania z pewnych implementacji, które są przypisane tej regule. Wiele razy źle. Na czym więc dokładnie polega ta …
89 c++  c  optimization  c++-faq  as-if 

4
GDB: przerwij, jeśli zmienna ma równą wartość
Lubię, gdy GDB ustawia punkt przerwania, gdy zmienna równa się pewnej wartości, którą ustawiłem, próbowałem tego przykładu: #include <stdio.h> main() { int i = 0; for(i=0;i<7;++i) printf("%d\n", i); return 0; } Wyjście z GDB: (gdb) break if ((int)i == 5) No default breakpoint address now. (gdb) run Starting program: /home/SIFE/run …
89 c  gdb 

4
Czy definicja „niestabilności” jest tak zmienna, czy też GCC ma jakieś problemy ze standardami zgodności?
Potrzebuję funkcji, która (jak SecureZeroMemory z WinAPI) zawsze zeruje pamięć i nie jest zoptymalizowana, nawet jeśli kompilator uważa, że ​​pamięć nie będzie już nigdy dostępna. Wydaje się, że jest to idealny kandydat na niestabilność. Ale mam pewne problemy z uruchomieniem tego z GCC. Oto przykładowa funkcja: void volatileZeroMemory(volatile void* ptr, …
89 c++  c  gcc  standards 

6
Czy kompilatory tworzą lepszy kod dla pętli do-while w porównaniu z innymi typami pętli?
W bibliotece kompresji zlib (która jest używana między innymi w projekcie Chromium) jest komentarz, który sugeruje, że pętla do-while w C generuje „lepszy” kod na większości kompilatorów. Oto fragment kodu, w którym się pojawia. do { } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) && *(ushf*)(scan+=2) == *(ushf*)(match+=2) && *(ushf*)(scan+=2) == *(ushf*)(match+=2) && …

3
Threadsafe vs re-entrant
Niedawno zadałem pytanie o tytule „Czy wątek malloc jest bezpieczny?” , aw środku zapytałem: „Czy Malloc jest ponownie wprowadzony?” Odniosłem wrażenie, że wszyscy ponownie wchodzący są bezpieczni dla wątków. Czy to założenie jest błędne?

7
Rzutowanie wskaźnika funkcji na inny typ
Powiedzmy, że mam funkcję, która akceptuje void (*)(void*)wskaźnik funkcji do użycia jako wywołanie zwrotne: void do_stuff(void (*callback_fp)(void*), void* callback_arg); Teraz, jeśli mam taką funkcję: void my_callback_function(struct my_struct* arg); Czy mogę to zrobić bezpiecznie? do_stuff((void (*)(void*)) &my_callback_function, NULL); Przyjrzałem się temu pytaniu i przyjrzałem się niektórym standardom C, które mówią, że …

14
Czy stos rośnie w górę czy w dół?
Mam ten fragment kodu w c: int q = 10; int s = 5; int a[3]; printf("Address of a: %d\n", (int)a); printf("Address of a[1]: %d\n", (int)&a[1]); printf("Address of a[2]: %d\n", (int)&a[2]); printf("Address of q: %d\n", (int)&q); printf("Address of s: %d\n", (int)&s); Wynik to: Address of a: 2293584 Address of a[1]: …
89 c  memory  stack 


9
Jak używać nan i inf w C?
Mam metodę numeryczną, która mogłaby zwrócić nan lub inf, jeśli wystąpił błąd, i dla celów testowania chciałbym tymczasowo zmusić ją do zwrócenia nan lub inf, aby upewnić się, że sytuacja jest obsługiwana poprawnie. Czy istnieje niezawodny, niezależny od kompilatora sposób tworzenia wartości nan i inf w języku C? Po około …
89 c  math 

2
Co to jest VDSO i VSYSCALL?
Zrobiłem sudo cat /proc/1/maps -vv Próbuję zrozumieć dane wyjściowe.Widzę, jak wiele bibliotek współdzielonych jest mapowanych na segment mapowania pamięci zgodnie z oczekiwaniami. 7f3c00137000-7f3c00179000 r-xp 00000000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00179000-7f3c00379000 ---p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00379000-7f3c0037a000 r--p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037a000-7f3c0037b000 rw-p 00043000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037b000-7f3c00383000 r-xp 00000000 08:01 …
89 c  linux  linux-kernel  kernel  vdso 

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.