У меня есть некоторые операторы if для обработки value_type различными способами. Если определено INT
, то value_type
является целым числом, но если определено CHAR
, value_typ
e является строкой. Как я могу справиться с этим, чтобы я не получал никаких ошибок или предупреждений?
Я определил value_type
следующим образом:
#ifdef INT
typedef int value_type;
#define TYPEMODE 1
#endif
#ifdef CHAR
typedef char value_type[80];
#define TYPEMODE -1
#endif
Я обработал это следующим образом в функциях:
int functionName(value_type val) {
if (TYPEMODE == 1) {
val = 5;
}
if (TYPEMODE == -1) {
strcpy(val, "hi");
}
return 0;
}
Если я определяю INT
, это дает мне предупреждение для strcpy
, если я определяю CHAR
, это дает мне предупреждение для val = 5
.
Есть ли лучший способ справиться это, что не даст мне никаких предупреждений с gcc -Wall file.c -o file
?