manque des accolades autour de l'initialiseur
Compilateur est GCC sous MPLAB 8, dsPIC33 ver 3.30 c
//Note: the first block below generates no error's with the compiler, but the data
// in the structurer is wrong.
// the 2nd block give warning, but the data is correct... why??
// NMEA2000.c:289: warning: missing braces around initializer
// NMEA2000.c:289: warning: (near initialization for 'static_can_filter[0]')
const tSCF static_can_filter[] = {
{(uint32) 0x01FFFFFF}, {(uint8) 2}, //Filter 0 (Process data)
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 1
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 2 (receive P2P-Message)
{(uint32) 0x0000FF00}, {(uint8) 2}, //Filter 3 (receive P2P-Message)
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 4
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 5
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 6
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 7
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 8
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 9
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 10
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 11
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 12
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 13
{(uint32) 0x00000000}, {(uint8) 2}, //Filter 14
(uint32) 0x00000000}, {(uint8) 2} //Filter 15
};
const tSCF static_can_filter[] = {
(uint32) 0x01FFFFFF, (uint8) 2, //Filter 0 (Process data)
(uint32) 0x00000000, (uint8) 2, //Filter 1
(uint32) 0x00000000, (uint8) 2, //Filter 2 (receive P2P-Message)
(uint32) 0x0000FF00, (uint8) 2, //Filter 3 (receive P2P-Message)
(uint32) 0x00000000, (uint8) 2, //Filter 4
(uint32) 0x00000000, (uint8) 2, //Filter 5
(uint32) 0x00000000, (uint8) 2, //Filter 6
(uint32) 0x00000000, (uint8) 2, //Filter 7
(uint32) 0x00000000, (uint8) 2, //Filter 8
(uint32) 0x00000000, (uint8) 2, //Filter 9
(uint32) 0x00000000, (uint8) 2, //Filter 10
(uint32) 0x00000000, (uint8) 2, //Filter 11
(uint32) 0x00000000, (uint8) 2, //Filter 12
(uint32) 0x00000000, (uint8) 2, //Filter 13
(uint32) 0x00000000, (uint8) 2, //Filter 14
(uint32) 0x00000000, (uint8) 2 //Filter 15
};
- Comment est
tSCF
défini?
Vous devez vous connecter pour publier un commentaire.
En supposant fcsp est définie de la manière suivante:
Ce que vous voulez probablement se présente comme suit:
Chaque initialiseur avec des accolades initialise un autre élément de la matrice. La première forme de votre question
{(uint32) 0x01FFFFFF}, {(uint8) 2},
se termine à la construction de deux membres de la matrice (chacune aveca
réglé à la valeur donnée, etb
mis à zéro). Vous pouvez voir cela avec votre exemple, par l'ajout explicite de la matrice de la limite (qui va conduire à l'compilateur se plaindre de l'excès de initialiseurs.La deuxième forme de votre question n'est exactement ce que vous voulez: quand il n'y a pas d'accolades et de l'élément du tableau est une structure (struct), les valeurs sont attribuées aux champs successifs. Il y a une option d'avertissement ici (probablement allumé avec
-Wall
ou quelque chose comme ça) parce que la forme donnée à cette réponse rend votre intention un peu plus clair.Il semble que vous avez manqué un
{
au début de cette ligne:Probablement un unclosed corset plus haut dans le fichier... nous avons besoin de voir cela dans le contexte - mettre dans un fichier sur son propre, votre deuxième tableau compile très bien. J'ai changé l'aide de types de recherche-remplacement, et ce qui ne produit pas d'erreurs ou d'avertissements avec
Donc, l'erreur doit être quelque part d'autre.