Pourquoi ne pas les travaux suivants lors de l'utilisation double (il fonctionne à l'aide int)retour double à partir de la fonction C, en utilisant l'expansion macro
test.c
#include "myFcn.h"
#include <stdio.h>
int main() {
printf("L1: %f \n", myGet_L1());
mySet_L1(10.0);
printf("L1: %f \n", myGet_L1());
return 0;
}
myFcn.c
#include "myFcn.h"
double L1 = 0.0;
double get(double *v) {
return *v;
}
void set(double *variable, double value) {
*variable = value;
}
myFcn.h
#ifndef __MYFCN_H__
#define __MYFCN_H__
extern double L1;
#define myGet_L1() get(&L1)
#define mySet_L1(value) set(&L1, (value))
#endif
I d on ne voit pas pourquoi cela fonctionne en utilisant int mais pas en double?
Vous avez besoin de prototypes de fonctions pour 'get' et' set' dans test.c. – mch
Pourquoi L1 est-elle déclarée comme une variable spaghetti globale? Une raison particulière, il ne peut pas être privé à myFcn.c? – Lundin
Obtenez un nouveau compilateur! Les déclarations implicites de fonction int ont été interdites il y a 18 ans. Pourquoi quelqu'un utiliserait-il un compilateur si ancien qu'il n'a pas été mis à jour au cours des 18 dernières années? (En cas de gcc plus ancienne que la version 5.0, le problème est souvent une mauvaise configuration.) Utilisez '-std = c11 -pedantic-errors'.) – Lundin