[語法] 宣告
#include <stdio.h>
extern int64_t Lcg1_seed;
extern int64_t lcg1_p;
extern int64_t lcg1_a;
int initial_lcg1 (void)
{
lcg1_p = 2147483647;
lcg1_a = 16807;
rand();
Lcg1_seed = rand();
return(Lcg1_seed);
}
int main (void)
{
int64_t Lcg1_seed;
if(Lcg1_seed==0){initial_lcg1();}
Lcg1_seed = lcg1_a * Lcg1_seed % lcg1_p;
return(Lcg1_seed);
}
========================================================
這是我利用Maple程式自動轉換C語言再修改一些地方
原本在編譯時,出現的是
=======================================================================
In function 'main':
17: error: 'lcg1_seed undeclared(first use in this function)
17: error: (Each undeclared identifier is reported only once
17: error: for each function it appears in.)
=======================================================================
這是說有東西未定義(因為轉換,一些Maple指令被直接轉過來)
改掉之後,結果跳出一連串的
=======================================================================
/Temp/cca3NIi8.o:nlcg.c:<.text+0xbc): undefined reference to '_lcg1_p'
/Temp/cca3NIi8.o:nlcg.c:<.text+0xbc): undefined reference to '_lcg1_a'
/Temp/cca3NIi8.o:nlcg.c:<.text+0xbc): undefined reference to '_lcg1_seed'
…
…
(大約12行)
collect2: ld returned 1 exit status
=======================================================================
我猜大概是沒宣告的問題,在測試一下了以後,在main和initial裡都加入宣告
int64_t *Lcg1_seed;
回應是
=======================================================================
in function 'initial_lcg1':
warning: assignment makes pointer from integer without a cast
warning: return makes integer from pointer without a cast
in function 'main':
error: invalid operands to binary *
warning: return makes integer from pointer without a cast
=======================================================================
剛看書大概理解一下,請問這是不是說我的Lcg1_seed是指標函數
所以需要一起地方給它存值呢?
如果是的話,那我應該把那個存值的變數放在全區變數那裡才能給main讀取嘛?
那error 說的無效是怎麼無效法?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.128.31
※ 編輯: chrisjon 來自: 123.195.128.31 (05/18 19:12)
推
05/19 02:11, , 1F
05/19 02:11, 1F
→
05/19 02:11, , 2F
05/19 02:11, 2F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章