excess elements in scalar initializer

firefighter1993

Grünschnabel
Hallo Leite,
ich habe ein kleines Problem. Und zwar soll bei einem Gerät welches in C Programmiert wurde die Chinesische Sprache hinzu gefügt werden. Um dies zu bewerkstelligen muss ich die einzelnen Buchstaben in HEX Code umwandeln. Hier das ergebnis:

Code:
const char * const txt_kein_therapiemodul_gefunden[] = {
"Kein Therapiemodul gefunden!",
"Therapy module not found!",
"¡Ningún módulo de terapia encontrado!",
"Apparecchiatura non connessa!",
"Geen therapiemoduul gevonden!",
{ 0x672A, 0x53D1, 0x73B0, 0x6CBB, 0x7597, 0x6A21, 0x5757, 0x21 },
};

Leider bekomme ich beim kompalieren mit Cygwin immer folgenden Fehler:

excess elements in scalar initializer
(near initialization for ‘txt_kein_therapiemodul_gefunden[5]’)


Habt ihr einen Tipp für mich? Eigentlich müsste "{ 0x672A, 0x53D1, 0x73B0, 0x6CBB, 0x7597, 0x6A21, 0x5757, 0x21 }" Anstatt des Chinesischen Textes funktionieren oder etwa nicht?

Gruß
firefighter1993
 
das ist nen Argument .. Char ist normalerweise bei ascii nur 8bit breit
aber wie kann ich es auf 16 bit erweitern?
Sobald ich Chinesiche zeichen habe brauch ich immer 16 bit, wenn ich gemischt mit Lateinischen und Chinesischen Zeichen arbeiten will
 
µController
ARM CPU
LH75411-N0 Q100 C0 von Sharp

Entwicklungsumgebung:
Cygwin mit:
GNU Make
GCC
GNU Binutils
GNU Bash
Netpbm
Iamgemagick

Compiler (arm-elf): GCC 4.1.1
Binutils (arm-elf): GNU Binutils 2.16.1 *)
C-Library (arm-elf): Newlib 2.14.0
Compiler (msp430): GCC 3.2.3
Binutils (msp430): GNU Binutils 041101 20041101

Hoffe, das reicht an Daten :D
In einem anderen Projekt wird xChar verwendet, hab aber nicht im Internet darüber gefunden


Ich glaube ich brauche einen UTF-16 Char, kann das sein?
 
Zuletzt bearbeitet:
Mit ARM/Newlib kenne ich mich überhaupt nicht aus. Aber wenn die das wie unter Linux machen sollte UTF-8 das Zauberwort sein. Dann bleibt es auch bei acht-Bit-char.
 
Probier doch mal

0xEF, 0xBB, 0xBF, 0xE6, 0x9C, 0xAA, 0xE5, 0x8F, 0x91, 0xE7, 0x8E, 0xB0, 0xE6, 0xB2, 0xBB, 0xE7, 0x96, 0x97, 0xE6, 0xA8, 0xA1, 0xE5, 0x9D, 0x97, 0x21

u.U. die ersten drei weglassen (BOM)
 
{ 0xE6, 0x9C, 0xAA, 0xE5, 0x8F, 0x91, 0xE7, 0x8E, 0xB0, 0xE6, 0xB2, 0xBB, 0xE7, 0x96, 0x97, 0xE6, 0xA8, 0xA1, 0xE5, 0x9D, 0x97, 0x21} Eingefügt..

nun folgende Fehler (vielleicht hab ich die auch vorher einfach übersehen)
warning: type defaults to ‘int’ in declaration of ‘txt_rechteck_1hz’
warning: initialization from incompatible pointer type
warning: braces around scalar initializer
warning: (near initialization for ‘txt_rechteck_1hz[5]’)
 
Zurück