2011-10-24 10 views
13

Pobrałem i napisałem wersję klang 3.0, aby móc trochę pograć z funkcjami C++ 11, jednak pojawia się ten błąd (mimo że I am używa flagi -Wc++11-extensions).Aktywacja obsługi C++ 11 w Clang

S: \ llvm \ kod> szczęk Exe -WC++ ++ 11-rozszerzenia variadic.cpp
variadic.cpp. 4: 19: Uwaga: zmiennej liczbie argumentów szablony są C++ 11 przedłużenie [-WC++ 11-extensions]
szablon < TypeName ... args >

i został zbudowany dzyń z VS10 na Windows 7 (64bit) i kompilacja przeszły pomyślnie.


Edit: W @cli_hlt wskazał, że jest to nie ostrzeżenie błąd, błąd jest coś, czego nie wklej w stanie wykonać polecenia: Program nie wykonywalny. Główną przyczyną tego było to, że link.exe nie był w PATH. Po uruchomieniu z wiersza polecenia VS wszystko było dobrze.

+23

Zakładam, że pierwotnie zrobiłeś polecenie "clang ++ variadic.cpp", zobaczyłeś ostrzeżenie i dodano flagę ostrzegawczą, która oczekuje, że ostrzeżenie zniknie. '-WC++ 11-extensions' jest domyślnie włączone podczas kompilacji w trybie C++ 03 (tryb domyślny), dlatego właśnie go zobaczyłeś. Możesz wyłączyć to za pomocą '-Wno-C++ 11-extensions', jednak prawdopodobnie lepiej jest po prostu skompilować w trybie C++ 11, używając' -std = C++ 11' – bames53

+0

@ bames53 dzięki, właśnie to się stało. – Motti

Odpowiedz

20

Otrzymujesz ostrzeżenie, a nie błąd.

Przełącznik -W służy do włączania ostrzeżeń kompilatora. Tak więc dla mojego zrozumienia, używając -WC++ 11-rozszerzeń mówisz kompilatorowi, aby Cię ostrzegał, jeśli używasz rozszerzeń C++ 11.

I dokładnie to, co się tutaj dzieje.

+2

Dobrze, że jestem idiotą. Po ostrzeżeniach następuje błąd "nie można wykonać polecenia: program nie jest wykonywalny", ale dzieje się tak nawet w przypadku 'int main() {}. Mój błąd.. – Motti