Il s'avère que j'avais enregistré le fichier source C++ en tant que fichier encodé en UTF-16 Unicode, avec les octets Unicode Byte Order Mark (BOM) au début du fichier. Le fichier a été enregistré au format UTF-16 sur un système Windows, engagé dans un système de contrôle de version, puis extrait sur Linux. gcc prend en charge Unicode encodé en UTF-8, mais pas Unicode encodé en UTF-16.
La solution consistait à reconvertir le fichier source en un encodage standard non Unicode.