2011-12-08 12 views
12

Mój kompilator (gcc) daje mi to ostrzeżenie. Proszę mi pomóc zrozumieć, co to znaczy:trigraf?/Ignored, użyj -trigraphs, aby włączyć

ostrzeżenie: trigraph ??/ignorowane, aby umożliwić stosowanie -trigraphs

+0

'?? /' jest odpowiednikiem ukośnika odwrotnego, możesz zamienić triikat na "\" –

+1

Jeśli nie chcesz (na przykład) edytować kodu C na terminalu 3270 komputera mainframe itp., Jest to "dobry pomysł" napisać wystąpienie "??" jako "? \?", ze względu na paranoję. (Niektóre znaki, takie jak {} [] \, są nieobecne w wielu zestawach znaków mainframe, a także niektórych klawiaturach innych niż angielskie dla innych systemów.) – BRFennPocock

+1

Zakurzone kąty C uderzają ponownie ... –

Odpowiedz

16

masz „przypadkowo” napisał trigraph gdzieś w kodzie źródłowym (kompilator na ostrzeżenie wskaże linię). Ponieważ trigraphy zostały wymyślone, aby rozwiązać problem, który nie wchodzi w grę w nowoczesnych systemach, nie chcesz, aby trigraph ??/ został zastąpiony znakiem \.

Dlatego ostrzeżenie to powinno być zignorowane (możesz powiedzieć kompilatorowi, aby zamknął się, dodając w wierszu poleceń -Wno-trigraphs, patrz docs). Ale dobrze byłoby pokazać kod źródłowy, abyśmy byli pewni.

4

Zamiast dodawać flagę kompilatora, można uciec przed każdym znakiem zapytania za pomocą \, tj. \?\?-. Pomogło to w moim przypadku.

+0

Flaga kompilatora jest przeznaczona dla przypadków gdzie piszesz trigrafię, nie zauważając, że to jedna. Wtedy kompilator nie będzie cię denerwował. Jeśli wiedziałeś w momencie pisania, że ​​jest to niezamierzony trigraf, to możesz uciec, gdy zasugerujesz i zapomnisz flagi kompilatora. –

Powiązane problemy