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.

10
Czy istnieje elegancki i szybki sposób sprawdzenia, czy 1-bity w liczbie całkowitej znajdują się w ciągłym regionie?
Muszę sprawdzić, czy pozycje (od 0 do 31 dla 32-bitowej liczby całkowitej) z wartością bitu 1 tworzą ciągły region. Na przykład: 00111111000000000000000000000000 is contiguous 00111111000000000000000011000000 is not contiguous Chcę, aby ten test, czyli jakaś funkcja has_contiguous_one_bits(int), był przenośny. Jednym z oczywistych sposobów jest zapętlenie pozycji w celu znalezienia pierwszego ustawionego …

8
Jak sprawdzić, czy ciąg znaków zaczyna się od innego ciągu w C?
Czy jest coś takiego startsWith(str_a, str_b)w standardowej bibliotece C? Powinien wziąć wskaźniki do dwóch ciągów kończących się na nullbajtach i powiedzieć mi, czy pierwszy z nich pojawia się również w całości na początku drugiego. Przykłady: "abc", "abcdef" -> true "abcdef", "abc" -> false "abd", "abdcef" -> true "abc", "abc" -> …


12
Czy można bezpiecznie zwrócić strukturę w C lub C ++?
Rozumiem, że nie należy tego robić, ale wydaje mi się, że widziałem przykłady, które robią coś takiego (kod notatki niekoniecznie jest poprawny składniowo, ale pomysł istnieje) typedef struct{ int a,b; }mystruct; A oto funkcja mystruct func(int c, int d){ mystruct retval; retval.a = c; retval.b = d; return retval; } …



8
Dlaczego GDB przeskakuje nieprzewidywalnie między wierszami i wypisuje zmienne jako „<zoptymalizowana wartość wyjściowa>”?
Czy ktoś może wyjaśnić to zachowanie gdb? 900 memset(&amp;new_ckpt_info,'\0',sizeof(CKPT_INFO)); (gdb) **903 prev_offset = cp_node-&gt;offset;** (gdb) **905 m_CPND_CKPTINFO_READ(ckpt_info,(char *)cb-&gt;shm_addr.ckpt_addr+sizeof(CKPT_** HDR),i_offset); (gdb) **903 prev_offset = cp_node-&gt;offset;** (gdb) **905 m_CPND_CKPTINFO_READ(ckpt_info,(char *)cb-&gt;shm_addr.ckpt_addr+sizeof(CKPT_ HDR),i_offset);** (gdb) **908 bitmap_offset = client_hdl/32;** (gdb) **910 bitmap_value = cpnd_client_bitmap_set(client_hdl%32);** (gdb) **908 bitmap_offset = client_hdl/32;** (gdb) **910 bitmap_value = cpnd_client_bitmap_set(client_hdl%32);** (gdb) …



7
Jak wywołać funkcję C ++ z C?
Wiem to. Wywołanie funkcji C z C ++: Gdyby moja aplikacja była w C ++ i musiałbym wywołać funkcje z biblioteki napisanej w C. Wtedy bym użył //main.cpp extern "C" void C_library_function(int x, int y);//prototype C_library_function(2,4);// directly using it. Nie zmieniłoby to nazwy, C_library_functiona konsolidator znalazłby tę samą nazwę w …
84 c++  c  visual-c++  extern-c 



12
Jak wyczyścić bufor wejściowy w C?
Mam następujący program: int main(int argc, char *argv[]) { char ch1, ch2; printf("Input the first character:"); // Line 1 scanf("%c", &amp;ch1); printf("Input the second character:"); // Line 2 ch2 = getchar(); printf("ch1=%c, ASCII code = %d\n", ch1, ch1); printf("ch2=%c, ASCII code = %d\n", ch2, ch2); system("PAUSE"); return 0; } Jak …
84 c  buffer 

2
Jak dokładnie działa sztuczka z podwójnym naciągiem?
Przynajmniej niektóre preprocesory języka C pozwalają na zdefiniowanie wartości makra, a nie jego nazwy, poprzez przekazanie go przez jedno makro podobne do funkcji do drugiego, które je określa: #define STR1(x) #x #define STR2(x) STR1(x) #define THE_ANSWER 42 #define THE_ANSWER_STR STR2(THE_ANSWER) /* "42" */ Przykładowe przypadki użycia tutaj . To działa, …


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.