2014-01-05 50 views
-5

我開始使用Pthreads編程。我使用Dev-C++和I連接庫到項目中。簡單的程序編譯,但它不起作用。下面我附上了代碼。有誰知道有什麼問題?C中的線程簡單的示例不起作用

#include <stdio.h> 
#include <stdlib.h> 
#include <pthread.h> 
#include <windows.h> 


void *func (void* x){ 
    printf("(%s)",'Hi. It's thread number 1'); 
    return 1; 
} 

int main() { 
    pthread_t thread; 
    int x=1; 

    pthread_create(&thread, NULL, func, &x); 
    pthread_join(thread,1); 

    return 0; 
} 
+0

你得到了什麼錯誤? – sujin

+3

定義:***不起作用*** –

+1

再次查看'printf'調用。 –

回答

0

編譯器沒有抱怨那個巨大的多字符字符常量嗎? (它應該抱怨兩次;一次是關於一個巨大的多字符字符常量,並且一次用於在printf預期字符串時將字符常量傳遞給printf)。請嘗試在第8行的字符串周圍使用雙引號。

3

此行

printf("(%s)",'Hi. It's thread number 1'); 

應該是

printf("(%s)", "Hi. It's thread number 1"); 

字符串文本使用引號"包圍。


另外傳遞1pthread_join() 2- 第二參數最likley調用未定義的行爲,因爲它告訴函數寫void *類型的值來解決1,這是不期望被指向有效存儲器。

+0

OP聲稱他的程序實際上是編譯的,所以我恐怕這是一個複製/粘貼「錯誤」。但是誰知道,我們會看到... - 關於'pthread_join()'的好處。 –

+0

非常感謝!問題解決了。問題在於printf中的pthread_join和引號。 – Pawel

+0

@Pawel:不客氣。如果這回答了您的問題,您可以通過點擊答案的複選標記將其標記爲此。 – alk

相關問題