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.

8
Czy można zainicjować wskaźnik C na NULL?
Pisałem takie rzeczy jak char *x=NULL; przy założeniu, że char *x=2; utworzy charwskaźnik do adresu 2. Ale w samouczku programowania GNU C jest napisane, że int *my_int_ptr = 2;przechowuje wartość całkowitą 2do dowolnego losowego adresu, w my_int_ptrktórym jest przydzielona. Wydawałoby się to sugerować, że moje własne char *x=NULLprzypisuje jakąkolwiek wartość …

5
Jak sprawić, by backtrace () / backtrace_symbols () wyświetlały nazwy funkcji?
Specyficzne dla Linuksa backtrace()i backtrace_symbols()pozwala na utworzenie śladu wywołania programu. Jednak dla mojego programu wypisuje tylko adresy funkcji, a nie ich nazwy. Jak mogę sprawić, by wyświetlały również nazwy funkcji? Próbowałem skompilować program -grównież z -ggdb. Poniższy przypadek testowy po prostu drukuje to: BACKTRACE ------------ ./a.out () [0x8048616] ./a.out () …
90 c  linux  debugging  backtrace 

12
C Zarządzanie pamięcią
Zawsze słyszałem, że w C trzeba naprawdę uważać, jak zarządza się pamięcią. I wciąż zaczynam uczyć się C, ale jak dotąd nie musiałem w ogóle wykonywać żadnych czynności związanych z zarządzaniem pamięcią. Zawsze wyobrażałem sobie, że muszę zwolnić zmienne i robić różne brzydkie rzeczy. Ale wydaje się, że tak nie …
90 c  memory 


5
gdb: "Nie załadowano tablicy symboli"
Wciąż otrzymuję ten komunikat o błędzie podczas próby dodania punktu przerwania w gdb. Użyłem tych poleceń do kompilacji: gcc -g main.c utmpib2.c -o main.o and: cc -g main.c utmpib2.c -o main.o and also: g++ -g main.c utmpib2.c -o main.o Próbowałem też „-ggdb” zamiast „-g” i nadal otrzymuję ten komunikat o …
90 c  gdb 




2
Co to jest (( ))?
Przeglądając kod źródłowy kompilatora gcc (gcc / c-family / c-pragma.c) widzę: typedef struct GTY(()) align_stack { int alignment; tree id; struct align_stack * prev; } align_stack; i niezależnie od tego, że mam za sobą wiele lat programowania w C, te bity: (())są jeszcze dla mnie całkowicie nieznane. Czy ktoś może …
90 c++  c 


16
Słyszałem, że i ++ nie jest bezpieczny dla wątków, czy ++ i jest bezpieczny dla wątków?
Słyszałem, że i ++ nie jest instrukcją bezpieczną dla wątków, ponieważ w asemblerze ogranicza się do przechowywania oryginalnej wartości gdzieś jako temp, zwiększania jej, a następnie zastępowania, co może zostać przerwane przez zmianę kontekstu. Zastanawiam się jednak nad ++ i. O ile wiem, sprowadziłoby się to do pojedynczej instrukcji asemblacyjnej, …
90 c++  c  multithreading 

6
Czy parsery GCC i Clang są naprawdę napisane odręcznie?
Wygląda na to, że GCC i LLVM-Clang używają ręcznie zapisywanych rekurencyjnych parserów zejścia , a nie generowanego maszynowo, opartego na Bison-Flex, analizowania oddolnego. Czy ktoś tutaj mógłby potwierdzić, że tak jest? A jeśli tak, to dlaczego główne platformy kompilatorów używają odręcznych parserów? Aktualizacja : interesujący blog na ten temat tutaj

4
Wywołaj funkcję C z kodu C ++
Mam funkcję C, którą chciałbym wywołać z C ++. Nie mogłem użyć extern "C" void foo()podejścia typu „ ”, ponieważ funkcja C nie została skompilowana przy użyciu g ++. Ale kompiluje się dobrze przy użyciu gcc. Jakieś pomysły, jak wywołać funkcję z C ++?
90 c++  c  linux  extern-c 

7
jaki jest niepodpisany typ danych?
Widziałem ten unsigned„bez typu” typ używany kilka razy, ale nigdy nie widziałem jego wyjaśnienia. Przypuszczam, że istnieje odpowiedni signedtyp. Oto przykład: static unsigned long next = 1; /* RAND_MAX assumed to be 32767 */ int myrand(void) { next = next * 1103515245 + 12345; return((unsigned)(next/65536) % 32768); } void mysrand(unsigned …
90 c  types  unsigned 

5
Błąd krytyczny GCC: stdio.h: Nie ma takiego pliku lub katalogu
Próbuję skompilować program w C na OS X 10.9 z GCC 4.9 (eksperymentalnie). Z jakiegoś powodu w czasie kompilacji pojawia się następujący błąd: gcc: fatal error: stdio.h: No such file or directory Następnie wypróbowałem prosty program Hello World: #include <stdio.h> int main(int argc, const char *argv[]) { printf("Hello, world!"); return …
90 c  gcc  stdio 

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.