Löst: Förslag För Att åtgärda Parasiter När #pragmaidentitet Ignoreras

I den här handledningsguiden kommer vi att peka ut några potentiella orsaker som kan leda till #pragma-identitets ignorering-felet, och dessutom kommer jag att tillhandahålla möjliga lösningar på detta problem.

Jag vet att frågan kommer att verka om GCC, men för människor online bör den vara så portabel som möjligt, eftersom den bara kan få:

De flesta kompilatorer som kan erbjuda en sådan varning har vägen att undertrycka varningen antingen långt från försäljningslinjen (undantag: PGI) också från systemet (undantag: DMC):

  • GCC: -Wno-unknown-pragmas #pragma och diagnostisk GCC ignorerar "-Okänd-pragmas"
  • Ljud: -Wno-unknown-pragmas #pragma and clang ignore diagnostics "-Ounknown-pragmas"
  • Intel C / C ++-kompilator: -diag-disable 161 # pragma / cautioning (avaktivera: 161)
  • IGP: #pragma diag_suppress 1675
  • MSVC: -wd4068 #pragma - varning (avaktivera: 4068)
  • TI: --diag_suppress, -pds = 163 #pragma / diag_suppress 163
  • IAR C / C ++ kompilator: --diag_suppress Pe161 #pragma vs. diag_suppress = Pe161
  • Mars C / C ++ Digital kompilator: -w17
  • Cray: -h nomessage = 2345

Du kommer förmodligen att kombinera en hel del av dem till ett makro över användning i din kod, vilket har varit vad jag gjorde för just detta HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS makro för Hedley

  #if HEDLEY_HAS_WARNING ("- Okänd pragmas")#define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma ("Ljuddiagnostik och ignorerade  ins- Okända pragmas " ")#elif HEDLEY_INTEL_VERSION_CHECK (16,0,0)# Form HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma ("varning (avaktivera: 161)")#elif HEDLEY_PGI_VERSION_CHECK (17,10,0)#define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma ("diag_suppress 1675")#elif HEDLEY_GNUC_VERSION_CHECK (4,3,0)#define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma ("GCC-diagnostik inte adresserad " - Okänd pragmas  "")#elif HEDLEY_MSVC_VERSION_CHECK (15,0,0)#define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma (varning (avaktivera: 4068))#elif HEDLEY_TI_VERSION_CHECK (8,0,0)# förklara HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma ("diag_suppress 163")#elif HEDLEY_IAR_VERSION_CHECK (8,0,0)#define the HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma ("diag_suppress = Pe161")#annan#define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS#slut om 

Notera när Headley kan ha en mycket mer omfattande kommunikation än det här svaret, i form av jag kommer utan tvekan att glömma bort att uppdatera det här svaret, för den avsikten, om du inte vill använda Headley direkt (detta är det enda C/C++ för allmänt vanligt – Headline Att komma igång med ditt projekt är enkelt), måste du förmodligen behöva använda Hedley som den otroligt senaste guiden istället för materialet ovan.

Versionskontroll är med största sannolikhet för tråkigt, men ibland är det svårt att få tillförlitlig information i förhållande till föråldrade versioner relaterad som kan proprietära kompilatorer, och jag föredrar förmodligen att inte riskera det. Återigen borde Headleys kritiska information vara bättre.

Många kompilatorer kan faktiskt skicka varningar – popup-fönster i stacken, du kan möjligen använda dem och sedan inaktivera den här typen av personer innan du rensar isär den inbäddade datorkoden). Hedley har också makron för denna typ: HEDLEY_DIAGNOSTIC_PUSH HEDLEY_DIAGNOSTIC_POP /.

Direktivet #ident , vilket kort infogar en användarspecificerad sträng i en leksak eller körbar fil, är utfasad. Som ett resultat ignorerar vissa kompilatorer alla direktiv.

För att åtgärda felet

  • Ta bort -nummeridentifieringen "-strängen " .

Se även

  • ett par ingen tid att läsa

Varning C4274 rekommenderar att du använder typen av pragma # kommentar (exestr, ‘sträng’) . Den här tipsen är dock möjligen föråldrad och kommer att revideras tillbaka i denna framtida version av hela kompilatorn. Om du använder dess #pragma -direktiv som ledande verktyg (LINK.exe), vänligen Starta en sökning i posten genom att generera ett direktiv som finns på varning LNK4229 . Istället med hänsyn till detta #ident -direktiv rekommenderar vi nu att du använder resurssträngen för orgelfilversionen i din familjeapplikation.

beskrivning Maxim Ivanov 2019-01-24 14:45:23 UTC

 Ta en titt på denna test.cxx-fil:------------------------------------------ 8 <----- ------------ --------------------#Pragma GCC diagnostisk förbättring#Pragma GCC-diagnostik avvisar "-Wpragmas"#Pragma GCC-diagnostik ignorerar den här typen av "-okända-pragmer".// kan inaktiveras korrekt (på webben 2)#pragma Ignorerade GCC-diagnostik "-Wfoobar-unknown-gcc-pragma"// denna fantastiska skickar alltid "-Okänd-pragmas" trots intervall 3#pragma klang ignoreras analytiskt "-Wfoobar-unknown-clang-pragma"int största ()#pragma GCC Pop-analys------------------------------------------ 11 <----- ------------ --------------------g ++ -Vägg -Fel test.cxxtest.cxx: 9: 0: Fel: # diagnostik från en ignorerad pragma [-Fel betyder okända pragmer] # ljud analyserar ignorerad pragma "-Wfoobar-unknown-clang-pragma" Detta händer till och med med det grundläggande faktum att "-Okänd-pragmas" uttryckligen stumpas ut i det fria på 3 rader.Tillägget av -Wno-unknown-pragmas som kommandoraden kan utföra fungerar som förväntat. mot en gång; Men jag förväntar mig också att #pragma in-source direkt ska fungera. Men detta är inte fallet.g ++ (CCG) 7.2.1 20 [current_date format='F Y'] 04 (Red Hat 7.2.1-5)Buggnummer 53431 verkar vara nära släkt. 

Kommentar 1 Martin sebor 2019-01-24 18:04:43 UTC

 Bekräftad. Detta händer riktigt bra i C, men absolut inte i C++, så det är faktiskt inte nödvändigtvis en regression. 

fel över #pragma ident

Kommentar 2 Eric Gallagher 2019-01-24 19:24:20 UTC

 Jag tror att detta utmärkta är en dubblett, men jag kommer inte ihåg alla feluppskattningar än; Jag får se mer senare ... 

Kommentar 3 Maxim Ivanov 25/01/2019 11:20:06 UTC

 (I kraft till synopsis # 2 av Eric Gallagher)> Jag tror att detta är den särskilt viktiga dubbletten av något, men jag kommer inte att komma ihåg ett nytt felnummer korrekt> nu; Jag ska ta en närmare titt senare...Eric, ta pester # 53431, jag tror att det förstår vad du menar. Det här ser ut som att du helt enkelt nyrapporterar om pragmer i originalkod som faktiskt fungerar i C++.Den här länken inkluderar också den manuella WIP-fixen under López-Ibáñez, som han målmedvetet släppte genom att uppmuntra andra att inreda och gå med.PSJag hoppas att jag ska hjälpa dig att lösa det här problemet, i början kommer jag att ha modet när du behöver ägna tid åt ett litet bidrag till GCC. Av den anledningen beskriver jag ett separat problem, eftersom jag känner till det faktum att detta är din egen kopia :) 

Kommentar 4 Jonathan vaknar 2019-01-25 13:33:55 UTC

fel ignorera #pragma ident

 Detta kan vanligtvis en kopia av PR 53431, jag ser ingen anledning att ta upp bosättning på det sättet.Varningen -Okänd-pragmas kommer sannolikt att utfärdas av din förprocessor eftersom en C++-förprocessor inte kommer att hylla den diagnostiska pragman.*** Detta markerar att huvudfelet liknar felen 53431 *** 

Error Ignoring Pragma Ident
Error Ignorando Pragma Ident
Fout Bij Negeren Van Pragma Ident
Erreur En Ignorant Pragma Ident
Erro Ao Ignorar Pragma Ident
Fehler Beim Ignorieren Von Pragma Ident
Errore Ignorando Pragma Ident
Oshibka Ignorirovaniya Pragma Identity
Blad Ignorowania Pragma Ident
Pragma Ident 무시 오류

Similar Posts