我有一些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给我任何警告?

最佳答案

int functionName(value_type val) {
   if (TYPEMODE == 1) {
      val = 5;
   }
   if (TYPEMODE == -1) {
      strcpy(val, "hi");
   }
   return 0;
}


int functionName(value_type val) {
#if TYPEMODE == 1
      val = 5;
#endif
#if TYPEMODE == -1
      strcpy(val, "hi");
#endif
   return 0;
}

10-04 10:29