Pytania otagowane jako gcc

GCC to kolekcja kompilatorów GNU. Jest to de facto standardowy kompilator dla C, C ++, Go, Fortran i Ady w systemie Linux i obsługuje również wiele innych języków i platform. Oprócz kompilatora GCC ma zestaw narzędzi (libc, libstdc ++, objdump, nm itp.), Które są szeroko stosowane na kilku platformach i systemach.

5
Czy pakiet __attribute __ gcc ((zapakowany)) / #pragma pack jest niebezpieczny?
W C kompilator rozłoży elementy składowe struktury w kolejności, w jakiej są zadeklarowane, z możliwymi bajtami wypełniającymi wstawionymi między składowymi lub po ostatnim składniku, aby upewnić się, że każdy element członkowski jest prawidłowo wyrównany. gcc udostępnia rozszerzenie języka __attribute__((packed)), które mówi kompilatorowi, aby nie wstawiał dopełnienia, co pozwala na niewłaściwe …
164 c  gcc  pragma-pack 

5
Dlaczego ta pętla generuje „ostrzeżenie: iteracja 3u wywołuje niezdefiniowane zachowanie” i wyświetla więcej niż 4 wiersze?
Kompilowanie tego: #include <iostream> int main() { for (int i = 0; i < 4; ++i) std::cout << i*1000000000 << std::endl; } i gccgeneruje następujące ostrzeżenie: warning: iteration 3u invokes undefined behavior [-Waggressive-loop-optimizations] std::cout << i*1000000000 << std::endl; ^ Rozumiem, że występuje przepełnienie liczby całkowitej ze znakiem. Nie mogę zrozumieć, …


14
Nie można skompilować programu w C na komputerze Mac po uaktualnieniu do Mojave
Użyłem polecenia gcc na terminalu do kompilowania programów w C, ale nagle, po aktualizacji systemu operacyjnego mojego Maca (do macOS 10.14 Mojave i XCode 10.0), zacząłem otrzymywać wiadomość: test.c:8:10: fatal error: stdio.h: No such file or directory #include <stdio.h> ^~~~~~~~~ compilation terminated. Mam już zainstalowane gcc, ponieważ mogę je znaleźć …
159 c  macos  gcc  terminal 

3
LD_LIBRARY_PATH a LIBRARY_PATH
Tworzę prosty program w C ++ i chcę tymczasowo zastąpić udostępnianą przez system bibliotekę współdzieloną jej nowszą wersją, na potrzeby programowania i testowania. Próbowałem ustawić zmienną LD_LIBRARY_PATH, ale linker (ld) nie powiódł się z: / usr / bin / ld: nie można znaleźć -lyaml-cpp Spodziewałem się, że to zadziała, ponieważ …
159 gcc  g++  ld 

3
deklaracja funkcji nie jest prototypem
Mam utworzoną przeze mnie bibliotekę, mylib.c: #include <mylib.h> int testlib() { printf("Hello world\n"); return (0); } mylib.h: #include <stdio.h> extern int testlib(); W moim programie próbowałem wywołać tę funkcję biblioteczną: myprogram.c: #include <mylib.h> int main (int argc, char *argv[]) { testlib(); return (0); } Kiedy próbuję skompilować ten program, pojawia …
158 c  gcc 

9
Dlaczego wypływ z końca funkcji innej niż void bez zwracania wartości nie powoduje błędu kompilatora?
Odkąd wiele lat temu zdałem sobie sprawę, że domyślnie nie powoduje to błędu (przynajmniej w GCC), zawsze zastanawiałem się, dlaczego? Rozumiem, że możesz wysyłać flagi kompilatora, aby wygenerować ostrzeżenie, ale czy nie powinno to zawsze być błędem? Dlaczego ma sens, aby funkcja nieważna, która nie zwraca wartości, była prawidłowa? Przykład …
158 c++  c  gcc  g++ 

24
Przydatne flagi GCC dla C
Oprócz ustawiania -Walli ustawiania -std=XXX, jakie inne naprawdę przydatne, ale mniej znane flagi kompilatora są dostępne do użytku w C? Szczególnie interesują mnie wszelkie dodatkowe ostrzeżenia i / lub przekształcanie ostrzeżeń w błędy w niektórych przypadkach, aby całkowicie zminimalizować wszelkie przypadkowe niezgodności typów.
157 c  gcc  compiler-flags 





2
Co właściwie robi ffast-math gcc?
Rozumiem, że --ffast-mathflaga gcc może znacznie zwiększyć prędkość operacji typu float i wykracza poza standardy IEEE, ale nie mogę znaleźć informacji o tym, co naprawdę się dzieje, gdy jest włączony. Czy ktoś może wyjaśnić niektóre szczegóły i może podać jasny przykład, jak coś by się zmieniło, gdyby flaga była włączona …

6
Jaka jest zaleta __builtin_expect GCC w instrukcjach if else?
Natknąłem się na plik, #definew którym używają __builtin_expect. Dokumentacja mówi: Wbudowana funkcja: long __builtin_expect (long exp, long c) Możesz użyć, __builtin_expectaby dostarczyć kompilatorowi informacje przewidywania gałęzi. Ogólnie rzecz biorąc, do tego ( -fprofile-arcs) należy używać rzeczywistych opinii o profilu , ponieważ programiści są notorycznie słabi w przewidywaniu rzeczywistego działania ich …
144 c  linux  gcc  built-in 


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.