microsoft / microsoft/vscode-cpptools

incorrectly formed universal character name using \u{...}

Offen
#12,341 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug Language Service Visual Studio
Vorherrschende Sprache
TypeScript
Sterne
6.2k
Forks
1.7k
Ø Merge
14 Std. 46 Min.
Gemergte PRs (30 T.)
61

Beschreibung

Environment
  • OS and Version: Fedora 40
  • VS Code Version: 1.89.1
  • C/C++ Extension Version: 1.20.5
Bug Summary and Steps to Reproduce

Bug Summary:

When writing std::string utf8_str = "\u{1F604}"; into a cpp file, the language server says incorrectly formed universal character name C/C++(965) however compilation and execution works fine.

Steps to reproduce:

  1. Create a cpp file an copy/paste this code:
#include <iostream>

int main() {
  std::string utf8_str = "\u{1F604}";
  std::cout << "UTF-8 string: " << utf8_str << std::endl;

  return 0;
}

  1. Compile it, I'm using g++ compiler

Expected behavior:
No error

image

Configuration and Logs
{
  "configurations": [
    {
      "name": "Linux",
      "includePath": ["${workspaceFolder}/**"],
      "defines": [],
      "compilerPath": "/usr/bin/gcc",
      "cStandard": "c17",
      "cppStandard": "gnu++17",
      "intelliSenseMode": "linux-gcc-x64"
    }
  ],
  "version": 4
}
Other Extensions

No response

Additional context

https://en.cppreference.com/w/cpp/language/escape

Note \u{n...} (since C++23) -> code point U+n... (arbitrary number of hexadecimal digits)

My compiler is using C++17 and works, also tried to change cppStandard to gnu++23 but still persist the error

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Verwende das bereitgestellte C++-Snippet als Reproduktionsfall, kompiliere es zunächst mit g++ und überprüfe die Diagnose des Language Servers unter der bereitgestellten c_cpp_properties-Konfiguration. Vergleiche die Diagnose mit auf gnu++17 und gnu++23 gesetztem cppStandard; abgeschlossen ist die Aufgabe, wenn der gültige universelle Zeichenname keinen falschen Fehler mehr erzeugt und das bestehende Kompilierungsverhalten weiterhin intakt bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.