J'ai écrit il y a plusieurs années une fonction dont le prototype
est le suivant :
unsigned char *
formateur_flux(struct_processus *s_etat_processus, unsigned char *donnees,
integer8 *longueur);
[...]
{
unsigned char *__a; integer8 __l;
__a = formateur_flux(rpl_arguments->s_etat_processus, c, &__l);
if (__a == NULL) return NULL;
free(c); c = __a;
}
et je me prends :
ngspice.rplc: In function ‘__external_loadCircuit’:
ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
ngspice.rplc:162:16: warning: pointer targets in assignment differ in signedness [-Wpointer-sign]
free(c); c = __a;
^
J'ai beau regarder dans tous les sens. c est un unsigned char *.
J'ai écrit il y a plusieurs années une fonction dont le prototype
est le suivant :
unsigned char *
formateur_flux(struct_processus *s_etat_processus, unsigned char *donnees,
integer8 *longueur);
[...]
{
unsigned char *__a; integer8 __l;
__a = formateur_flux(rpl_arguments->s_etat_processus, c, &__l);
if (__a == NULL) return NULL;
free(c); c = __a;
}
et je me prends :
ngspice.rplc: In function ‘__external_loadCircuit’:
ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
ngspice.rplc:162:16: warning: pointer targets in assignment differ in signedness [-Wpointer-sign]
free(c); c = __a;
^
J'ai beau regarder dans tous les sens. c est un unsigned char *.
J'ai écrit il y a plusieurs années une fonction dont le prototype
est le suivant :
unsigned char *
formateur_flux(struct_processus *s_etat_processus, unsigned char *donnees,
integer8 *longueur);
[...]
{
unsigned char *__a; integer8 __l;
__a = formateur_flux(rpl_arguments->s_etat_processus, c, &__l);
if (__a == NULL) return NULL;
free(c); c = __a;
}
et je me prends :
ngspice.rplc: In function ‘__external_loadCircuit’:
ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
ngspice.rplc:162:16: warning: pointer targets in assignment differ in signedness [-Wpointer-sign]
free(c); c = __a;
^
J'ai beau regarder dans tous les sens. c est un unsigned char *.
ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
Question bête : le prototype de la fonction est-il écrit quelque part
dans ngspice.rplc, avant son utilisation ?
ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
Question bête : le prototype de la fonction est-il écrit quelque part
dans ngspice.rplc, avant son utilisation ?
ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
Question bête : le prototype de la fonction est-il écrit quelque part
dans ngspice.rplc, avant son utilisation ?
Le 30/05/2018 17:46, JKB a écrit :J'ai écrit il y a plusieurs années une fonction dont le prototype
est le suivant :
unsigned char *
formateur_flux(struct_processus *s_etat_processus, unsigned char *donnees,
integer8 *longueur);
[...]
{
unsigned char *__a; integer8 __l;
__a = formateur_flux(rpl_arguments->s_etat_processus, c, &__l);
if (__a == NULL) return NULL;
free(c); c = __a;
}
et je me prends :
ngspice.rplc: In function ‘__external_loadCircuit’:
ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
Question bête : le prototype de la fonction est-il écrit quelque part
dans ngspice.rplc, avant son utilisation ?
ngspice.rplc:162:16: warning: pointer targets in assignment differ in signedness [-Wpointer-sign]
free(c); c = __a;
^
J'ai beau regarder dans tous les sens. c est un unsigned char *.
Question bête numéro 2 : c est-il aussi déclaré comme unsigned char *
dans ngspice.rplc, avant son utilisation ?
Question de simple curiosité : pourquoi cette extension .rplc au lieu
de .c ?
Le 30/05/2018 17:46, JKB a écrit :
J'ai écrit il y a plusieurs années une fonction dont le prototype
est le suivant :
unsigned char *
formateur_flux(struct_processus *s_etat_processus, unsigned char *donnees,
integer8 *longueur);
[...]
{
unsigned char *__a; integer8 __l;
__a = formateur_flux(rpl_arguments->s_etat_processus, c, &__l);
if (__a == NULL) return NULL;
free(c); c = __a;
}
et je me prends :
ngspice.rplc: In function ‘__external_loadCircuit’:
ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
Question bête : le prototype de la fonction est-il écrit quelque part
dans ngspice.rplc, avant son utilisation ?
ngspice.rplc:162:16: warning: pointer targets in assignment differ in signedness [-Wpointer-sign]
free(c); c = __a;
^
J'ai beau regarder dans tous les sens. c est un unsigned char *.
Question bête numéro 2 : c est-il aussi déclaré comme unsigned char *
dans ngspice.rplc, avant son utilisation ?
Question de simple curiosité : pourquoi cette extension .rplc au lieu
de .c ?
Le 30/05/2018 17:46, JKB a écrit :J'ai écrit il y a plusieurs années une fonction dont le prototype
est le suivant :
unsigned char *
formateur_flux(struct_processus *s_etat_processus, unsigned char *donnees,
integer8 *longueur);
[...]
{
unsigned char *__a; integer8 __l;
__a = formateur_flux(rpl_arguments->s_etat_processus, c, &__l);
if (__a == NULL) return NULL;
free(c); c = __a;
}
et je me prends :
ngspice.rplc: In function ‘__external_loadCircuit’:
ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
Question bête : le prototype de la fonction est-il écrit quelque part
dans ngspice.rplc, avant son utilisation ?
ngspice.rplc:162:16: warning: pointer targets in assignment differ in signedness [-Wpointer-sign]
free(c); c = __a;
^
J'ai beau regarder dans tous les sens. c est un unsigned char *.
Question bête numéro 2 : c est-il aussi déclaré comme unsigned char *
dans ngspice.rplc, avant son utilisation ?
Question de simple curiosité : pourquoi cette extension .rplc au lieu
de .c ?
Le 30/05/2018 17:56, je répondais à JKB :ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
Question bête : le prototype de la fonction est-il écrit quelque part
dans ngspice.rplc, avant son utilisation ?
Je complète ma réponse.
Sans un prototype de formateur_flux dans ngspice.rplc, le compilateur
considèrera par défaut que cette fonction retourne un int. Or si les
int sont plus petits que les pointeurs (par exemple int sur 32 bits
et pointeur sur 64 bits), seule une partie de la valeur du pointeur
sera copiée dans __a, d'où le segfault quand tu essayes de le
déréférencer.
Le 30/05/2018 17:56, je répondais à JKB :
ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
Question bête : le prototype de la fonction est-il écrit quelque part
dans ngspice.rplc, avant son utilisation ?
Je complète ma réponse.
Sans un prototype de formateur_flux dans ngspice.rplc, le compilateur
considèrera par défaut que cette fonction retourne un int. Or si les
int sont plus petits que les pointeurs (par exemple int sur 32 bits
et pointeur sur 64 bits), seule une partie de la valeur du pointeur
sera copiée dans __a, d'où le segfault quand tu essayes de le
déréférencer.
Le 30/05/2018 17:56, je répondais à JKB :ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
Question bête : le prototype de la fonction est-il écrit quelque part
dans ngspice.rplc, avant son utilisation ?
Je complète ma réponse.
Sans un prototype de formateur_flux dans ngspice.rplc, le compilateur
considèrera par défaut que cette fonction retourne un int. Or si les
int sont plus petits que les pointeurs (par exemple int sur 32 bits
et pointeur sur 64 bits), seule une partie de la valeur du pointeur
sera copiée dans __a, d'où le segfault quand tu essayes de le
déréférencer.
Le 30/05/2018 17:56, je répondais à JKB :ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
Question bête : le prototype de la fonction est-il écrit quelque part
dans ngspice.rplc, avant son utilisation ?
Je complète ma réponse.
Sans un prototype de formateur_flux dans ngspice.rplc, le compilateur
considèrera par défaut que cette fonction retourne un int. Or si les
int sont plus petits que les pointeurs (par exemple int sur 32 bits
et pointeur sur 64 bits), seule une partie de la valeur du pointeur
sera copiée dans __a, d'où le segfault quand tu essayes de le
déréférencer.
Le 30/05/2018 17:56, je répondais à JKB :
ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
Question bête : le prototype de la fonction est-il écrit quelque part
dans ngspice.rplc, avant son utilisation ?
Je complète ma réponse.
Sans un prototype de formateur_flux dans ngspice.rplc, le compilateur
considèrera par défaut que cette fonction retourne un int. Or si les
int sont plus petits que les pointeurs (par exemple int sur 32 bits
et pointeur sur 64 bits), seule une partie de la valeur du pointeur
sera copiée dans __a, d'où le segfault quand tu essayes de le
déréférencer.
Le 30/05/2018 17:56, je répondais à JKB :ngspice.rplc:160:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
Question bête : le prototype de la fonction est-il écrit quelque part
dans ngspice.rplc, avant son utilisation ?
Je complète ma réponse.
Sans un prototype de formateur_flux dans ngspice.rplc, le compilateur
considèrera par défaut que cette fonction retourne un int. Or si les
int sont plus petits que les pointeurs (par exemple int sur 32 bits
et pointeur sur 64 bits), seule une partie de la valeur du pointeur
sera copiée dans __a, d'où le segfault quand tu essayes de le
déréférencer.
Rhoh pétard. Je me filerais des baffes !
Début de mon fichier de macros de programmation :
#ifndef INCLUSION_RPLARGS
# define INCLUSION_RPLARGS
/*
=============================================================================== > INCLUSIONS
=============================================================================== > */
// Si TYPE_DECLARATION est défini, toutes les structures internes du RPL/2
// sont exposés pour travailler sur des nouveaux types de données.
# ifndef TYPE_DECLARATION
# define RPLARGS
# define struct_processus void
# endif
# include "rpl.h"
Note bien le define RPLARGS (puisque TYPE_DECLARATION n'est pas
défini). Et dans mes prototypes :
#ifndef RPLARGS
...
unsigned char *formateur_flux(struct_processus *s_etat_processus,
unsigned char *donnees, integer8 *longueur);
...
#endif
Rhoh pétard. Je me filerais des baffes !
Début de mon fichier de macros de programmation :
#ifndef INCLUSION_RPLARGS
# define INCLUSION_RPLARGS
/*
=============================================================================== > INCLUSIONS
=============================================================================== > */
// Si TYPE_DECLARATION est défini, toutes les structures internes du RPL/2
// sont exposés pour travailler sur des nouveaux types de données.
# ifndef TYPE_DECLARATION
# define RPLARGS
# define struct_processus void
# endif
# include "rpl.h"
Note bien le define RPLARGS (puisque TYPE_DECLARATION n'est pas
défini). Et dans mes prototypes :
#ifndef RPLARGS
...
unsigned char *formateur_flux(struct_processus *s_etat_processus,
unsigned char *donnees, integer8 *longueur);
...
#endif
Rhoh pétard. Je me filerais des baffes !
Début de mon fichier de macros de programmation :
#ifndef INCLUSION_RPLARGS
# define INCLUSION_RPLARGS
/*
=============================================================================== > INCLUSIONS
=============================================================================== > */
// Si TYPE_DECLARATION est défini, toutes les structures internes du RPL/2
// sont exposés pour travailler sur des nouveaux types de données.
# ifndef TYPE_DECLARATION
# define RPLARGS
# define struct_processus void
# endif
# include "rpl.h"
Note bien le define RPLARGS (puisque TYPE_DECLARATION n'est pas
défini). Et dans mes prototypes :
#ifndef RPLARGS
...
unsigned char *formateur_flux(struct_processus *s_etat_processus,
unsigned char *donnees, integer8 *longueur);
...
#endif
Bonsoir à tous,
J'ai honte de poser la question que je vais vous soumettre, mais je
ne comprends pas mon erreur.
J'ai écrit il y a plusieurs années une fonction dont le protot ype
est le suivant :
unsigned char *
formateur_flux(struct_processus *s_etat_processus, unsigned char *donnees,
integer8 *longueur);
integer8 est, comme son nom l'indique, un entier de 64 bits (parce
qu'il y a des vrais bouts de Fortran avec des INTEGER*8 dedans).
*longueur est un paramètre de sortie.
Cette fonction donne satisfaction. Grosso modo, elle prend une
chaîne et transforme un certain nombre de codes d'échappement avant
de renvoyer une nouvelle chaine allouée dans la fonction.
Je viens de corriger un code d'un stagiaire et j'ai un warning (en
fait une erreur puisque ça termine par un segfault) que je ne
comprends pas.
J'ai rajouté une verrue, façon quick and dirty dans une foncti on
erronée qui oubliait de traiter les caractères d'échappem ent :
{
unsigned char *__a; integer8 __l;
__a = formateur_flux(rpl_arguments->s_etat_processus, c, &__l);
if (__a == NULL) return NULL;
free(c); c = __a;
}
et je me prends :
ngspice.rplc: In function ‘__external_loadCircuit’:
ngspice.rplc:160:9: warning: assignment makes pointer from integer withou t a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
ngspice.rplc:162:16: warning: pointer targets in assignment differ in sig nedness [-Wpointer-sign]
free(c); c = __a;
^
J'ai beau regarder dans tous les sens. c est un unsigned char *.
__a aussi.
formateur_flux() renvoie un unsigned char *. Pourquoi
cette affectation pose-t-elle problème ?
Je sèche lamentablement.
Bien cordialement,
JKB
Bonsoir à tous,
J'ai honte de poser la question que je vais vous soumettre, mais je
ne comprends pas mon erreur.
J'ai écrit il y a plusieurs années une fonction dont le protot ype
est le suivant :
unsigned char *
formateur_flux(struct_processus *s_etat_processus, unsigned char *donnees,
integer8 *longueur);
integer8 est, comme son nom l'indique, un entier de 64 bits (parce
qu'il y a des vrais bouts de Fortran avec des INTEGER*8 dedans).
*longueur est un paramètre de sortie.
Cette fonction donne satisfaction. Grosso modo, elle prend une
chaîne et transforme un certain nombre de codes d'échappement avant
de renvoyer une nouvelle chaine allouée dans la fonction.
Je viens de corriger un code d'un stagiaire et j'ai un warning (en
fait une erreur puisque ça termine par un segfault) que je ne
comprends pas.
J'ai rajouté une verrue, façon quick and dirty dans une foncti on
erronée qui oubliait de traiter les caractères d'échappem ent :
{
unsigned char *__a; integer8 __l;
__a = formateur_flux(rpl_arguments->s_etat_processus, c, &__l);
if (__a == NULL) return NULL;
free(c); c = __a;
}
et je me prends :
ngspice.rplc: In function ‘__external_loadCircuit’:
ngspice.rplc:160:9: warning: assignment makes pointer from integer withou t a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
ngspice.rplc:162:16: warning: pointer targets in assignment differ in sig nedness [-Wpointer-sign]
free(c); c = __a;
^
J'ai beau regarder dans tous les sens. c est un unsigned char *.
__a aussi.
formateur_flux() renvoie un unsigned char *. Pourquoi
cette affectation pose-t-elle problème ?
Je sèche lamentablement.
Bien cordialement,
JKB
Bonsoir à tous,
J'ai honte de poser la question que je vais vous soumettre, mais je
ne comprends pas mon erreur.
J'ai écrit il y a plusieurs années une fonction dont le protot ype
est le suivant :
unsigned char *
formateur_flux(struct_processus *s_etat_processus, unsigned char *donnees,
integer8 *longueur);
integer8 est, comme son nom l'indique, un entier de 64 bits (parce
qu'il y a des vrais bouts de Fortran avec des INTEGER*8 dedans).
*longueur est un paramètre de sortie.
Cette fonction donne satisfaction. Grosso modo, elle prend une
chaîne et transforme un certain nombre de codes d'échappement avant
de renvoyer une nouvelle chaine allouée dans la fonction.
Je viens de corriger un code d'un stagiaire et j'ai un warning (en
fait une erreur puisque ça termine par un segfault) que je ne
comprends pas.
J'ai rajouté une verrue, façon quick and dirty dans une foncti on
erronée qui oubliait de traiter les caractères d'échappem ent :
{
unsigned char *__a; integer8 __l;
__a = formateur_flux(rpl_arguments->s_etat_processus, c, &__l);
if (__a == NULL) return NULL;
free(c); c = __a;
}
et je me prends :
ngspice.rplc: In function ‘__external_loadCircuit’:
ngspice.rplc:160:9: warning: assignment makes pointer from integer withou t a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
ngspice.rplc:162:16: warning: pointer targets in assignment differ in sig nedness [-Wpointer-sign]
free(c); c = __a;
^
J'ai beau regarder dans tous les sens. c est un unsigned char *.
__a aussi.
formateur_flux() renvoie un unsigned char *. Pourquoi
cette affectation pose-t-elle problème ?
Je sèche lamentablement.
Bien cordialement,
JKB
Bonsoir à tous,
J'ai honte de poser la question que je vais vous soumettre, mais je
ne comprends pas mon erreur.
J'ai écrit il y a plusieurs années une fonction dont le prototype
est le suivant :
unsigned char *
formateur_flux(struct_processus *s_etat_processus, unsigned char *donnees,
integer8 *longueur);
integer8 est, comme son nom l'indique, un entier de 64 bits (parce
qu'il y a des vrais bouts de Fortran avec des INTEGER*8 dedans).
*longueur est un paramètre de sortie.
Cette fonction donne satisfaction. Grosso modo, elle prend une
chaîne et transforme un certain nombre de codes d'échappement avant
de renvoyer une nouvelle chaine allouée dans la fonction.
Je viens de corriger un code d'un stagiaire et j'ai un warning (en
fait une erreur puisque ça termine par un segfault) que je ne
comprends pas.
J'ai rajouté une verrue, façon quick and dirty dans une fonction
erronée qui oubliait de traiter les caractères d'échappement :
{
unsigned char *__a; integer8 __l;
__a = formateur_flux(rpl_arguments->s_etat_processus, c, &__l);
if (__a == NULL) return NULL;
free(c); c = __a;
}
et je me prends :
ngspice.rplc: In function ‘__external_loadCircuit’:
ngspice.rplc:160:9: warning: assignment makes pointer from integer
without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
ngspice.rplc:162:16: warning: pointer targets in assignment differ in
signedness [-Wpointer-sign]
free(c); c = __a;
^
J'ai beau regarder dans tous les sens. c est un unsigned char *.
__a aussi. formateur_flux() renvoie un unsigned char *. Pourquoi
cette affectation pose-t-elle problème ?
Je sèche lamentablement.
Bien cordialement,
JKB
Bonsoir à tous,
J'ai honte de poser la question que je vais vous soumettre, mais je
ne comprends pas mon erreur.
J'ai écrit il y a plusieurs années une fonction dont le prototype
est le suivant :
unsigned char *
formateur_flux(struct_processus *s_etat_processus, unsigned char *donnees,
integer8 *longueur);
integer8 est, comme son nom l'indique, un entier de 64 bits (parce
qu'il y a des vrais bouts de Fortran avec des INTEGER*8 dedans).
*longueur est un paramètre de sortie.
Cette fonction donne satisfaction. Grosso modo, elle prend une
chaîne et transforme un certain nombre de codes d'échappement avant
de renvoyer une nouvelle chaine allouée dans la fonction.
Je viens de corriger un code d'un stagiaire et j'ai un warning (en
fait une erreur puisque ça termine par un segfault) que je ne
comprends pas.
J'ai rajouté une verrue, façon quick and dirty dans une fonction
erronée qui oubliait de traiter les caractères d'échappement :
{
unsigned char *__a; integer8 __l;
__a = formateur_flux(rpl_arguments->s_etat_processus, c, &__l);
if (__a == NULL) return NULL;
free(c); c = __a;
}
et je me prends :
ngspice.rplc: In function ‘__external_loadCircuit’:
ngspice.rplc:160:9: warning: assignment makes pointer from integer
without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
ngspice.rplc:162:16: warning: pointer targets in assignment differ in
signedness [-Wpointer-sign]
free(c); c = __a;
^
J'ai beau regarder dans tous les sens. c est un unsigned char *.
__a aussi. formateur_flux() renvoie un unsigned char *. Pourquoi
cette affectation pose-t-elle problème ?
Je sèche lamentablement.
Bien cordialement,
JKB
Bonsoir à tous,
J'ai honte de poser la question que je vais vous soumettre, mais je
ne comprends pas mon erreur.
J'ai écrit il y a plusieurs années une fonction dont le prototype
est le suivant :
unsigned char *
formateur_flux(struct_processus *s_etat_processus, unsigned char *donnees,
integer8 *longueur);
integer8 est, comme son nom l'indique, un entier de 64 bits (parce
qu'il y a des vrais bouts de Fortran avec des INTEGER*8 dedans).
*longueur est un paramètre de sortie.
Cette fonction donne satisfaction. Grosso modo, elle prend une
chaîne et transforme un certain nombre de codes d'échappement avant
de renvoyer une nouvelle chaine allouée dans la fonction.
Je viens de corriger un code d'un stagiaire et j'ai un warning (en
fait une erreur puisque ça termine par un segfault) que je ne
comprends pas.
J'ai rajouté une verrue, façon quick and dirty dans une fonction
erronée qui oubliait de traiter les caractères d'échappement :
{
unsigned char *__a; integer8 __l;
__a = formateur_flux(rpl_arguments->s_etat_processus, c, &__l);
if (__a == NULL) return NULL;
free(c); c = __a;
}
et je me prends :
ngspice.rplc: In function ‘__external_loadCircuit’:
ngspice.rplc:160:9: warning: assignment makes pointer from integer
without a cast [-Wint-conversion]
__a = formateur_flux((*rpl_arguments).s_etat_processus, c, &__l);
^
ngspice.rplc:162:16: warning: pointer targets in assignment differ in
signedness [-Wpointer-sign]
free(c); c = __a;
^
J'ai beau regarder dans tous les sens. c est un unsigned char *.
__a aussi. formateur_flux() renvoie un unsigned char *. Pourquoi
cette affectation pose-t-elle problème ?
Je sèche lamentablement.
Bien cordialement,
JKB
Le 30/05/2018 18:17, JKB a écrit :Rhoh pétard. Je me filerais des baffes !
Début de mon fichier de macros de programmation :
#ifndef INCLUSION_RPLARGS
# define INCLUSION_RPLARGS
/*
=============================================================================== >> INCLUSIONS
=============================================================================== >> */
// Si TYPE_DECLARATION est défini, toutes les structures internes du RPL/2
// sont exposés pour travailler sur des nouveaux types de données.
# ifndef TYPE_DECLARATION
# define RPLARGS
# define struct_processus void
# endif
# include "rpl.h"
Note bien le define RPLARGS (puisque TYPE_DECLARATION n'est pas
défini). Et dans mes prototypes :
#ifndef RPLARGS
...
unsigned char *formateur_flux(struct_processus *s_etat_processus,
unsigned char *donnees, integer8 *longueur);
...
#endif
Ah oui, je comprends que ce soit difficile à lire et source d'erreur,
ce #define qui dépend d'un #ifndef avec un autre nom.
Pour ma part, autant que possible j'essaye que mes #include soient
inconditionnels (donc pas dans un #if ... #endif), et ils ressemblent
à ça :
--------------------------------------
/*
* Fichier foo.h
*/
#ifndef _FOO_H
#define _FOO_H
...
...
...
#endif /* _FOO_H */
--------------------------------------
Par ailleurs, une fonction définie dans foo.c sera obligatoirement
déclarée (avec un prototype complet) dans foo.h, et on trouvera un
'#include "foo.h"' à la fois dans foo.c et dans tous les fichiers
bar.c qui utilisent cette fonction.
Le 30/05/2018 18:17, JKB a écrit :
Rhoh pétard. Je me filerais des baffes !
Début de mon fichier de macros de programmation :
#ifndef INCLUSION_RPLARGS
# define INCLUSION_RPLARGS
/*
=============================================================================== >> INCLUSIONS
=============================================================================== >> */
// Si TYPE_DECLARATION est défini, toutes les structures internes du RPL/2
// sont exposés pour travailler sur des nouveaux types de données.
# ifndef TYPE_DECLARATION
# define RPLARGS
# define struct_processus void
# endif
# include "rpl.h"
Note bien le define RPLARGS (puisque TYPE_DECLARATION n'est pas
défini). Et dans mes prototypes :
#ifndef RPLARGS
...
unsigned char *formateur_flux(struct_processus *s_etat_processus,
unsigned char *donnees, integer8 *longueur);
...
#endif
Ah oui, je comprends que ce soit difficile à lire et source d'erreur,
ce #define qui dépend d'un #ifndef avec un autre nom.
Pour ma part, autant que possible j'essaye que mes #include soient
inconditionnels (donc pas dans un #if ... #endif), et ils ressemblent
à ça :
--------------------------------------
/*
* Fichier foo.h
*/
#ifndef _FOO_H
#define _FOO_H
...
...
...
#endif /* _FOO_H */
--------------------------------------
Par ailleurs, une fonction définie dans foo.c sera obligatoirement
déclarée (avec un prototype complet) dans foo.h, et on trouvera un
'#include "foo.h"' à la fois dans foo.c et dans tous les fichiers
bar.c qui utilisent cette fonction.
Le 30/05/2018 18:17, JKB a écrit :Rhoh pétard. Je me filerais des baffes !
Début de mon fichier de macros de programmation :
#ifndef INCLUSION_RPLARGS
# define INCLUSION_RPLARGS
/*
=============================================================================== >> INCLUSIONS
=============================================================================== >> */
// Si TYPE_DECLARATION est défini, toutes les structures internes du RPL/2
// sont exposés pour travailler sur des nouveaux types de données.
# ifndef TYPE_DECLARATION
# define RPLARGS
# define struct_processus void
# endif
# include "rpl.h"
Note bien le define RPLARGS (puisque TYPE_DECLARATION n'est pas
défini). Et dans mes prototypes :
#ifndef RPLARGS
...
unsigned char *formateur_flux(struct_processus *s_etat_processus,
unsigned char *donnees, integer8 *longueur);
...
#endif
Ah oui, je comprends que ce soit difficile à lire et source d'erreur,
ce #define qui dépend d'un #ifndef avec un autre nom.
Pour ma part, autant que possible j'essaye que mes #include soient
inconditionnels (donc pas dans un #if ... #endif), et ils ressemblent
à ça :
--------------------------------------
/*
* Fichier foo.h
*/
#ifndef _FOO_H
#define _FOO_H
...
...
...
#endif /* _FOO_H */
--------------------------------------
Par ailleurs, une fonction définie dans foo.c sera obligatoirement
déclarée (avec un prototype complet) dans foo.h, et on trouvera un
'#include "foo.h"' à la fois dans foo.c et dans tous les fichiers
bar.c qui utilisent cette fonction.
Bref, je me suis fait avoir par un garde-fou que j'avais moi-même
installé et par un warning de gcc pas vraiment pertinent.
Bref, je me suis fait avoir par un garde-fou que j'avais moi-même
installé et par un warning de gcc pas vraiment pertinent.
Bref, je me suis fait avoir par un garde-fou que j'avais moi-même
installé et par un warning de gcc pas vraiment pertinent.