2010-11-29 6 views
0

un peu de code, je suis à la recherche, un tableau 3D a été initialisé comme ceci:initialisation de tableau en trois dimensions

static const char codeset[6][256][10] = { 
    [0] = { [0x20] = " ", 
    [0x21] = "!", 
    [0x22] = """, 
    [0x23] = "#", 
}}; 

(Il ne va pour initialiser le reste des cellules, je Je l'ai raccourci pour afficher quelque chose de lisible.)

Ceci n'est pas compilé. Est-ce censé le faire? Que se passe t-il ici?

+0

Pourrions-nous avoir le message d'erreur? –

+0

erreur de syntaxe: '[', pointant vers la ligne avec [0] . – dkb

+1

Compile pour moi correctement (gcc 4.5.1). Si vous êtes sur GCC, vous pouvez ajouter '-std = c99' à votre ligne de commande juste pour être du bon côté, car il s'agit d'une extension C99. – Kos

Répondre

2

Vous essayez d'utiliser C99 initializers, mais très probablement votre compilateur n'est pas C99 conforme, il serait par ailleurs travailler.

+2

Bon lien, mais à moins que mes capacités de lecture ne soient buggées, cela indique que c'est l'extension C99, pas l'extension GCC. GCC étend sur ceci en permettant d'initialiser des gammes. +1 de toute façon car le lien explique ce qui se passe ici. Je ne le savais pas trop :) – Kos

+0

@Kos Merci, corrigé. J'étais tellement sûr que c'était GCC seulement, donc je n'ai pas lu attentivement. – qrdl

0

En guise de supposition, il essaye de créer l'alphabet pour les données ASCII de la chaîne xml. Le "(guillemets doubles) caractère xml est représenté comme & quot Donc [0]. [0 - 255] groupe est xml

Il ressemble à une table d'équivalence Il se traduit de XML en ASCII ou tout

...
+0

Heh, Peut-être que je n'étais pas clair - je sais ce que le point de la matrice est, je veux savoir quel est le problème avec l'initialisation (qui, d'après ce que j'ai lu, n'est pas censé fonctionner comme ça). – dkb

3

Vous utilisez initializers C99, mais votre compilateur ne supporte pas C99 ou C99 est pas activé.

Questions connexes