2015-04-06 80 views
0

我試圖通過結構部分作爲參數。但是,我在編譯時收到以下消息:「未知類型名稱'time1'」。下面是我的代碼是造成這些問題的部分:結構部分作爲參數:未知類型名稱

#include <stdio.h> 

struct time { 
    int hour; 
    int minutes; 
    int seconds; 
}; 

struct time time1; 
struct time time2; 
struct time elapsed; 

int hourDif (time1.hour, time2.hour) { 
    if (time2.hour >= time1.hour) { 
     elapsed.hour = time2.hour - time1.hour; 
    } 
    else { 
     elapsed.hour = 24 - (time1.hour - time2.hour); 
    } 
    return 0; 
} 
+3

函數定義需要每個參數的類型和名稱。你既沒有給出 - 你已經給出了實際的數據,就像你調用函數而不是定義它一樣。 –

回答

2

int hourDif (time1.hour, time2.hour) 

是不是一個函數調用,這是一個函數聲明,並在你的情況這也是它的定義,你需要的是

int hourDif (struct time time1, struct time time2) 
{ 
    int difference; 
    difference = 0; /* some compilers might complain */ 
    if (time2.hour >= time1.hour) 
     difference = time2.hour - time1.hour; 
    else 
     difference = 24 - (time1.hour - time2.hour); 
    return difference; 
} 

,然後在某個地方的代碼,而不需要全局變量,你必須

struct time time1; 
struct time time2; 

/* initialize `time1' and `time2' */ 
int difference = hourDiff(time1, time2);