我是一名新的 C 程序员,我正在为家庭作业编写一些数据结构。我在这里有两个问题。
- 我们看到很多 C 函数指针的例子,通常用于节省代码重复。我弄乱了这个函数,我最初写的是:
(我们预定义的常量。缩进也关闭了)。
static PlayerResult playerCheckArguments(const char* name, int age,
int attack, int defense) {
PlayerResult result = PLAYER_SUCCESS;
if (!name) {
result = PLAYER_NULL_ARGUMENT;
} else if (strlen(name) > PLAYER_MAX_NAME_LENGTH) {
result = PLAYER_NAME_TOO_LONG;
} else if (invalidAge(age)) {
result = PLAYER_INVALID_AGE;
} else if (invalidAttack(attack)) {
result = PLAYER_INVALID_ATTACK;
} else if (invalidDefense(defense)) {
result = PLAYER_INVALID_DEFENSE;
}
return result;
}
直到我得到这个食尸鬼:
static PlayerResult playerCheckArguments(const char* name, int age, int attack,
int defense) {
void* arguments[PLAYER_NUM_OF_PAREMETERS] = { name, &age, &attack, &defense };
PlayerResult (*funcArray[PLAYER_NUM_OF_PAREMETERS])(
int) = {&invalidName, &invalidAge, &invalidAttack, &invalidDefense };
PlayerResult result = PLAYER_SUCCESS;
for (int i = 0;
i < PLAYER_NUM_OF_PAREMETERS && result == PLAYER_SUCCESS; i++) {
PlayerResult (*func)(int) = funcArray[i];
void* key = arguments[i];
result = func(key);
}
return result;
我的第一个问题是 - 有什么理由我应该使用/编写第二个函数而不是另一个函数,并且通常尝试使用明显降低代码的清晰度和/或简单性的这种“复杂性”?
现在,对于我的第二个问题:您可能已经注意到,我使用了很多局部变量来简化调试。这样,我可以查看所有相关评估并在程序运行时有效地监控程序。除了使用局部变量之外,还有其他方法可以显示函数中的表达式吗?
非常感谢!
返回 0 ;-)