我是一個新的C程序員,我正在寫作業的一些數據結構。 我在這裏有兩個問題。C - Eclipse CDT - 高效的調試+什麼是更好的代碼(指向函數)?
- 我們看到很多C函數指針的例子,通常用於保存代碼重複。我搞砸了這個函數,我最初寫道:
(常量我們pre #defined。縮進也是關閉)。
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;
我的第一個問題的存在 - 沒有任何理由爲什麼我應該使用/寫入第二個功能比其他,一般儘量採用這種「sophistications 「這明顯降低了代碼的清晰度和/或簡單性?
現在,對於我的第二個問題:正如您可能已經注意到的,爲了更容易的調試,我使用了大量局部變量。這樣,我可以看到所有相關的評估,並在運行時有效地監控該程序。 除了使用局部變量之外,還有其他方式可以顯示函數中的表達式嗎?
非常感謝!
返回0 ;-)
由於聲明爲靜態,因此可以內聯。是的:第一個是一次可讀的。 – wildplasser