2012-01-06 26 views
10

Vâng, đây phải là một cách ngớ ngẩn. Dưới đây là một mã không thể đơn giản trong C. Nó không thể biên dịch câu nói "không xác định tham chiếu đến giấc ngủ". Nhưng tôi nghĩ rằng tôi bao gồm tất cả tiêu đề hệ thống mà tôi cần ...Không xác định tham chiếu đến "ngủ" nhưng tôi đã bao gồm <unistd.h>

#include <stdio.h> 
#include <unistd.h> 
int main() 
{ 
    printf("Test starts.\n"); 
    sleep(1); 
    printf("Test ends.\n"); 

    return 1; 
} 
+3

"Không xác định tham chiếu" có vẻ như không liên kết với nội dung cần thiết. – Kevin

+1

Hệ điều hành/Trình biên dịch? Có thể có nhiều mã hơn điều này với một lỗi đánh máy? Điều này biên dịch và liên kết với gcc 4.6.1. – JoeFish

+0

@MengfeiMurphy, trình biên dịch nào bạn đang sử dụng? Bạn đang gõ dòng lệnh nào để biên dịch? Hãy cho chúng tôi biết mọi thứ bạn có thể. –

Trả lời

33

Hãy thử điều này ở đầu trang:

#ifdef __unix__ 
# include <unistd.h> 
#elif defined _WIN32 
# include <windows.h> 
#define sleep(x) Sleep(1000 * x) 
#endif 

Mã này sẽ cho phép bạn sử dụng hai khác nhau chức năng dưới cùng một tên, mà làm điều khá giống nhau. Và nó biên dịch theo các nền tảng khác nhau.

+0

Tuyệt vời! Bạn đang chết tiệt! Tôi đang sử dụng win7 + 'WinGW'. Đây là lần đầu tiên tôi gặp các vấn đề di động trong thực tế. Bạn có bất kỳ ví dụ tương tự nào khác không? –

+0

Thực ra nó không đến với tâm trí của tôi nhưng bạn có thể làm rất nhiều thứ theo cách này. Nó sạch sẽ và đơn giản. – wazabit

+0

điều này thực tế làm việc, ngoài vấn đề của tôi với cờ trong codeblocks, tôi có thể chạy mã mà tôi đã thực hiện trên hệ thống linux trong windows nhờ vào tiêu đề này – thinksinbinary

-2

Theo hướng dẫn của Trình lập trình Linux, tất cả những gì bạn cần là không làm việc để ngủ. Kiểm tra xem bạn có thiết lập đường dẫn bao gồm chính xác hay không. Btw nếu bạn sử dụng các cửa sổ mà nó không giống như u đang sử dụng, bạn có thể sử dụng cho giấc ngủ bao gồm windows.h

2

Nếu bạn đang chạy trong hệ điều hành Windows, hãy bao gồm windows.h tệp tiêu đề cho chương trình của bạn và thay đổi sleep() thành Sleep().

Sự cố sẽ biến mất.

Tôi hy vọng điều này sẽ hữu ích.

+0

Chức năng của Windows ''Sleep()' chỉ bằng mili giây, trong khi * Nix's 'sleep()' chỉ mất vài giây. * Tương đương NIX của 'Sleep()' là 'usleep()'. Xem câu trả lời của Wazabit cho cách chính xác để tạo mã sử dụng 'sleep()' portable. –

Các vấn đề liên quan