J'ai du mal à faire fonctionner un morceau de code, j'ai un code utilisant une fonction avec buffer local, quand le tampon local est initialisé alors j'ai une exception, mais quand je viens de le déclarer sans initialisation ça marche bien, je ne peux pas comprendre pourquoi. J'ai également augmenté la taille de la pile dans l'éditeur de liens, mais cela ne semble pas être le problème. NB: Je compile avec l'option de compilation c99/c11 qui supporte toute l'initialisation du tampon.L'initialisation complète du buffer mène à l'exception
#define UDS_SRV_CFG2_MAX 20
NCS_PRI_FCT tUdsStatus UDS_RdbiManagement(u16 *puwLen, u8 *aubUdsData) {
tUdsStatus eUdsStatus;
u8 ubTableCfgIdx[UDS_SRV_CFG2_MAX] = { 0 }; // this leads to exception
//...
}
NCS_PRI_FCT tUdsStatus UDS_RdbiManagement(u16 *puwLen, u8 *aubUdsData) {
tUdsStatus eUdsStatus;
u8 ubTableCfgIdx[UDS_SRV_CFG2_MAX]; // code works fine here
// ...
}
Vous ne pouvez pas "compiler avec l'option de compilation c99/c11". Vous construisez en mode C99, * ou * vous construisez en mode C11. Vous ne pouvez pas faire les deux, ils sont mutuellement exclusifs. –
Que voulez-vous dire "initialisation de tampon complet"? En C (C89, C99, C11) il n'y a pas d'initialisation partielle. Les objets sont non initialisés ou complètement (tous les octets actifs) initialisés. – pmg
Et * où * obtenez-vous l'exception? Quand 'UDS_RdbiManagement' est appelé? Ailleurs? Vous * avez * utilisé un débogueur pour localiser où le crash se produit dans * votre * code? –