0
#define TRIP 6
#include <stdio.h>
char error_area(char area_code, char S, char M, char L, char N, char P, char K, char R, char C, char U, char W, char O, char T, char F);
int main(void)
{
char area_code, S, M, L, N, P, K, R, C, U, W, O, T, F, checkB, travelarea[TRIP];
printf("Please select from the following that best describes your destination:\n"); /*area code input*/
printf("S Small city - population under 50,000\n"); /*Choices for area code*/
printf("M Medium city - population between 50,000 and 500,000\n");
printf("L Large city - pop. over 500,000\n");
printf("N Natural formation like a mountain, a lake, a cave, a geyser, a fjord, a canyon, etc.\n");
printf("P Designated park or reserve such as a wildlife refuge, a national park, a bioreserve, or a protected marine area\n");
printf("K Man made landmark like the Great Wall of China, the Taj Mahal, or Stonehenge\n");
printf("R State or province or region of a country\n");
printf("C Whole country\n");
printf("U Multiple countries like traveling through Europe\n");
printf("W Ocean voyage\n");
printf("O Any other type of destination - such as visiting the sites of the seven wonders of the world\n");
printf("Please enter the Area Letter code:");
scanf("%c", &area_code);
checkB = error_area(area_code, S, M, L, N, P, K, R, C, U, W, O, T, F);
while (checkB == F) /*error loop for error area code*/
{
printf("Please re-enter a valid area_code:");
scanf("%c", &area_code);
checkB = error_area(area_code, S, M, L, N, P, K, R, C, U, W, O, T, F);
if (checkB == T)
{travelarea[0]=area_code;}
}
}
error_area(area_code, S, M, L, N, P, K, R, C, U, W, O, T, F) /*area code error check*/
{
if ((area_code == S) || (area_code == M) || (area_code == L) ||(area_code == N) ||(area_code == P) ||(area_code == K) || (area_code == R) ||(area_code == C) || (area_code == U) || (area_code == W) || (area_code == O))
{
return T;
}
else
{
printf("Area code is invalid. (Please make sure code is capitalize)\n");
return F ;
}
}
我得到這個錯誤:當我編譯衝突類型的錯誤先前的聲明___在這裏
test2.c:40: error: conflicting types for âerror_areaâ
test2.c:5: error: previous declaration of âerror_areaâ was here
我不斷收到這些錯誤信息,我敢肯定,我宣佈在開始原型及其類型所以我不確定爲什麼會出現類型衝突。 我的一位導師告訴我,這是因爲它被聲明並且在底部定義了所有類型,我稱之爲error_area,但似乎不起作用。
所以這意味着除了int以外的其他類型的函數我還需要在我調用函數時定義類型 – 2011-02-24 17:57:36
@Thao Nguyen:「Call」?這與任何「呼叫」無關。你*聲明*函數(原型)和你*定義*函數(實體)。在這兩種情況下,所有類型都必須明確指定。而且,'int'也必須明確指定。只有過時的C語言版本才允許省略「int」。不再。 – AnT 2011-02-24 18:02:48
@AndreyT:只要人們仍然重視向後兼容性,你會在實踐中看到這些過時的版本。有時候,糟糕的決定,或者至少令人遺憾的決定,會持續很長時間。 – 2011-02-24 18:08:20