作者ijb ()
看板EE_DSnP
标题[问题] 请问compile c跟c++的问题
时间Wed Nov 29 18:55:12 2006
最近写作业, 还到某个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*)'
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
1.想要请教为什麽一样的code,在c compiler可以过,c++ compiler不能过??
2.void*(*)(void*)的参数要怎麽写啊??
3.还有像48的error
act_new.sa_handler=TimePrint();
不能这样子写,我有去查sa_handler,它需要传入的是void func_name(int)
我也在这行之上加上过int i=0;
然後改写act_new.sa_handler=TimePrint(0);
结果错误还是一样....囧rz啊....
我也有试过传入值前面拿掉&,像A_Thread_Queue的作法(原本是&A_Thread_Queue),
一样可以通过compiler,而且也可以执行....
所以证明这样的写法在c,c++应该都是pass by reference(希望我的想法没错),
还是哪里有错呢??????????????????
又是拉里拉杂....连自己都快要搞不懂了.囧.............
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.42.185