【发布时间】:2020-07-21 09:20:05
【问题描述】:
我有一些 if 语句以不同的方式处理 value_type。如果定义了INT,则value_type 是一个整数,但如果定义了CHAR,则value_type 是一个字符串。我该如何处理,以免收到任何错误或警告?
我这样定义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 警告的方法?
【问题讨论】:
-
val = 5应该实现什么?int这里应该是int*吗?
标签: c type-conversion warnings typedef