<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > c++創(chuàng )建線(xiàn)程的常見(jiàn)問(wèn)題:error: invalid conversion from 'void*' to 'void* (*)(void*)'

c++創(chuàng )建線(xiàn)程的常見(jiàn)問(wèn)題:error: invalid conversion from 'void*' to 'void* (*)(void*)'

發(fā)布人:電子禪石 時(shí)間:2019-12-19 來(lái)源:工程師 發(fā)布文章

重點(diǎn):注意,這里只能寫(xiě)gcc,究其原因就是C語(yǔ)言編譯器允許隱含性的將一個(gè)通用指針轉換為任意類(lèi)型的指針,而C++不允許的。

本人近期在做按tcp流發(fā)送數據包的學(xué)習,一來(lái)二去接觸到了多線(xiàn)程。我百度照此寫(xiě)了個(gè)多線(xiàn)程代碼,如下:

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void thread(void *arg);
void thread(void *arg)
{
    int i;
    for(i = 0; i < 3; ++i){
        printf("This is a pthead.\n");
    }
}
int main(int argc, char* argv[])
{
    pthread_t id;
    int i, ret;
    ret = pthread_create(&id, NULL, (void*)&thread, NULL);
    if(ret){
        printf("create thread error: ");
        exit(1);
    }
    for(i = 0; i < 3; ++i){
        printf("This is main proccess");
    }
    pthread_join(id, NULL);
    return 0;
}
但是,他爹,我用g++ main.cpp -o -lpthread debug進(jìn)行編譯的時(shí)候,這個(gè)家伙:error: invalid conversion from 'void*' to 'void* (*)(void*)'不厭其煩地出現在了我的xshell中,弄得我是苦不堪言。
于是,我查看了Posix中建立線(xiàn)程函數的定義:extern int pthread_create (pthread_t *__restrict __threadp,  __const pthread_attr_t *__restrict __attr, void(*__start_routine) (void *), void *__restrict __arg) __THROW;
這個(gè)pthread_create()中的第三個(gè)參數是載入一個(gè)函數,這個(gè)函數有一個(gè)參數可以傳入,返回一個(gè) 通用指針。
因此,出現上述錯誤的解決方法:
1)線(xiàn)程函數定義為void  thread(void* arg),而調用處寫(xiě)為:int ret = pthread_create(&id, NULL, (viod*)&thread, NULL);
2)線(xiàn)程函數定義為void * thread(void* arg),調用處為:int ret = pthead_create(&id, NULL, thread, NULL)。
然后進(jìn)行編譯: gcc main.c -o -lpthread debug,搞定!
注意,這里只能寫(xiě)gcc,究其原因就是C語(yǔ)言編譯器允許隱含性的將一個(gè)通用指針轉換為任意類(lèi)型的指針,而C++不允許的。
————————————————

原文鏈接:https://blog.csdn.net/Alpelious/article/details/53486547


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。

電抗器相關(guān)文章:電抗器原理


關(guān)鍵詞: c++

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>