I have a C program that output values to stdout from measure. I use printf
to display them and the format allows me to change the precision
printf("Scan=%d S_0=%.5f S_1=%.5f S_2=%.5f S_3=%.5f", scanId, S0, S1, S2, S3);
My issue is that I have a lot of printing like this one and if I want to change the precision quickly I have to get on each one and change it. I was wondering if it was possible to use something like a #define
to have it on a precise location and it will apply on each printf
at compilation. I know it is not possible easily without recompile but I'm ok with that. I know something similar as I ask here in python is:
f"{s_0:.{prec}f}"
CodePudding user response:
One way would be to do a #define
(as you guessed) like this:
#define PFLT "%.5f"
printf("Scan=%d S_0=" PFLT " S_1=" PFLT " S_2=" PFLT " S_3=" PFLT, scanId, S0, S1, S2, S3);
Then to change the precision you just need to alter the #define
and recompile.
CodePudding user response:
You can use a *
symbol in place of the precision, in which case the precision is given as a parameter. Then you can define a constant to pass to printf
.
#define P_FLOAT 5
printf("Scan=%d S_0=%.*f S_1=%.*f S_2=%.*f S_3=%.*f",
scanId, P_FLOAT, S0, P_FLOAT, S1, P_FLOAT, S2, P_FLOAT, S3);