2012-06-27 23 views
21

odkryłem, że mój projekt ustawiaDo czego służy GCC_NO_COMMON_BLOCKS?

GCC_NO_COMMON_BLOCKS = NO 

pod firmy Apple LLVM Compiler 3.1 - ustawienia generowania kodu, ponieważ "żaden wspólny Blocks"

enter image description here

Chcę wiedzieć: co to jest flaga używana?

Thanks a lot

Odpowiedz

31

Od szybkiej pomocy Xcode za:

W C, przeznaczają nawet niezainicjowane zmiennych globalnych w sekcji danych pliku wynikowego, zamiast generowania je jako wspólne bloki. Powoduje to, że jeśli zadeklarowana zostanie ta sama zmienna (bez extern) w dwóch różnych kompilacjach, otrzymasz komunikat o błędzie, gdy je połączymy . Jedynym powodem, dla którego może to być przydatne, jest sprawdzenie, czy program będzie działał na innych systemach, które zawsze działają w ten sposób w ten sposób.

można znaleźć szybką pomoc w prawym okienku, w obszarze „Pokaż Szybka pomoc Inspector” zakładce: Xcode Quick Help Inspector

+4

Dzięki! Nie wiedziałem, że szybka pomoc XCode pomogła również w ustawieniach kompilacji i tym podobnych. To zaoszczędziłoby mi trochę czasu. – Lio

+5

Ta opcja wydaje się być włączona zgodnie z zalecanymi ustawieniami Xcode 8. – Richard

+2

Problem polegający na tym, że domyślnie jest włączony w Xcode 8, będzie bałagan dla całej masy istniejących projektów przez prawdopodobnie większość programistów przez wiele lat .. i "błąd" generowany w większości przypadków (jeśli nie wszystkie) będzie nie wskazują na to, które zmienne są "pospolite", ani błąd nie sugeruje, że jest on powiązany ze "zwykłymi" zmiennymi, ani też nie jest wskazówką, że głównym źródłem błędu była (automatyczna) zmiana ustawienia kompilatora, która spowodowała różnicę. – hokkuk