2017-04-09 116 views
-3

我需要生成一個隨機數,而不使用「隨機」功能,所以我發現這個代碼,給我mlliseconds系統:產生一個隨機數沒有隨機函數

#include <stdio.h> 
#include <sys/timeb.h> 

int main() 
{ 
struct timeb tmb; 

ftime(&tmb); 
printf("tmb.time  = %ld (seconds)\n", tmb.time); 
printf("tmb.millitm = %d (mlliseconds)\n", tmb.millitm); 

return 0; 
} 

這是工作好,直到我試圖以這種方式在struct結構中使用它:

#include <sys/timeb.h> 
#include "stdlib.h" 
struct Num{ 
struct timeb tmb; 
ftime(&tmp);  
}; 
int main() 
{ 

return 0; 
} 

它在{ftime}處給出一個錯誤。 有幫助嗎?

+1

「出錯」?而實際的錯誤是? – dhke

+0

[錯誤]預期在'ftime'之前的限定符列表 –

+1

啊,剛剛看到它:你爲什麼試圖從結構的聲明(即函數外部)調用函數?因爲......那麼......爲什麼會這樣呢? – dhke

回答

0

ftime(&tmp);是如C11/6.5.2指定後綴表達式的例子(第四行下降):

 postfix-expression: 
       primary-expression 
       postfix-expression [ expression ] 
       postfix-expression (argument-expression-listopt) 
       postfix-expression . identifier 
       postfix-expression -> identifier 
       postfix-expression ++ 
       postfix-expression -- 
       (type-name) { initializer-list } 
       (type-name) { initializer-list , } 
     argument-expression-list: 
       assignment-expression 
       argument-expression-list , assignment-expression 

C標準參考指定您在C11/6.7.2.1使用該結構說明符語法,顯然你的例子違反了這種語法,因爲後綴表達式這裏沒有可能:

 struct-or-union-specifier: 
       struct-or-union identifieropt { struct-declaration-list } 
       struct-or-union identifier 
     struct-or-union: 
       struct 
       union 
     struct-declaration-list: 
       struct-declaration 
       struct-declaration-list struct-declaration 
     struct-declaration: 
       specifier-qualifier-list struct-declarator-listopt ; 
       static_assert-declaration 
     specifier-qualifier-list: 
       type-specifier specifier-qualifier-listopt 
       type-qualifier specifier-qualifier-listopt 
     struct-declarator-list: 
       struct-declarator 
       struct-declarator-list , struct-declarator 
     struct-declarator: 
       declarator 
       declaratoropt : constant-expression 

C的句法結構不是太難學;它在大多數書籍中教得相當好。我的建議是你找到一個新的指南,因爲如果你對語法感到困惑,C的語義將證明極具挑戰性。正如我在你的問題的評論中寫道:

我建議ķ&R2E;做練習,你遇到他們(和,直到他們完全不動的)。

如果您在教科書或練習中遇到過一些詞語,請發表任何關於您的疑問。