Compiling this C program with gcc 11.4.0 and -Werror=traditional-conversion raises an error:
short int f(short int x);short int f(short int x) { return x;}int main(void){ short int a = 0; f(a); return 0;}
error: passing argument 1 of ‘f’ with different width due to prototype
Assuming that I can't change the function's signature because it comes from a library, is there a way to change the calling code to make the error go away?
I did try several kind of integer types for the a
variable but to no avail. I would not expect the error to appear because the variable and the function's parameter prototype type are the same (short int). It looks to me like a false positive but it may be related to some implicit default promotion. I would rather find a solution that doesn't make me remove this compilation flag.