※ 引述《eeturtur (The End)》之銘言:
: ※ 引述《ijb ()》之銘言:
: : 最近寫作業, 還到某個c跟c++的問題
: : 希望有高手幫忙我解答
: 我不是高手 只是閒閒沒事上網幫忙查了一下^^""
: : source code:
: : http://narcissus.ee.ntu.edu.tw/~yufu/emos_yufu.c
: : http://narcissus.ee.ntu.edu.tw/~yufu/emos_yufu.cpp
: : 其中,emos_yufu.c用
: : gcc emos_yufu.c -lncurses -lpthread -o hw --> ok,沒任何錯誤
: : emos_yufu.cpp用
: : g++ emos_yufu.cpp -lncurses -lpthread -o hw --> fail,錯誤訊息如下:
: : emos_yufu.cpp: In function 'int main()':
: : emos_yufu.cpp:32: error: invalid conversion from 'void* (*)()' to 'void* (*)(void*)'
: : emos_yufu.cpp:32: error: initializing argument 3 of 'int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)'
: 我查到 pthread_create(&ThreadA,NULL,task1,NULL);的用法
: 其中ThreadA是一個pthread_t的變數 和你用的一樣
: 而傳入的第二和第四個參數也和你一樣都是傳入NULL
: 但task1的function protype是長這樣 void *task1(void *)
: 我視過如果將你的void *A_Thread_Queue(); 改成 ==> void *A_Thread_Queue(void* i);
: 就可以work了
: 所以我想你的error應該是你傳入的東西和它定義的不同吧
: 我參考的網頁如下
: http://www.phptr.com/articles/article.asp?p=169479&seqNum=7&rl=1
: : emos_yufu.cpp:37: error: invalid conversion from 'void*' to 'void* (*)(void*)'
: : emos_yufu.cpp:37: error: initializing argument 3 of 'int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)'
: 這個和前一段的問題是一樣的
: : emos_yufu.cpp:48: error: void value not ignored as it ought to be
: 我查了在struct sigaction中的 sighanlder_t 有以下這樣的敘述
: sa_hanlder 保存函數的地址,該函數帶一個整型參數,沒有返回值。
: 它還可以是兩個特別值之一:SIG_DFL 和 SIG_IGN。
: 然後void func_name(int)就是一個不回傳值的function
: 當然就不能把它的結果assign給另一個變數吧??
: 這是我查到的網頁
: http://www.vckbase.com/document/viewdoc/?id=1363
: 希望沒有幫錯忙^^||
只能說超讚啦...果然有高手.....
再問一個問題,雖然我還沒去看你說的那個網頁,但是依照觀念....
void func_name(int),若我沒有把void func_name的值assign到int上
而只是單純的想符合語法所以寫了void func_name(1)的這個做法
應該是不會有錯的呀....因為我沒有在void func_name() { 裡面寫retrun xxxx; }
那為什麼compile會有void value not ignored as it ought to be的錯誤訊息
anyway,我會先去看看你說的這些網頁,有結果會儘快po出來的
謝謝你囉....不愧是"同學"啊~~~~~ 嘻~~~
糟....我是用回文的方式吼...好吧!來個virtual的推文吧
推 ijb: 果然是高手高手高高手~ 也感謝ric2k1大大的先知灼見
推 ijb: 網頁先推再看... XD...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.42.185