সিতে 'ঘুম' ফাংশনটির জন্য উপযুক্ত # অন্তর্ভুক্ত কী?


124

আমি বিগ Nerd রঞ্চ বইটি উদ্দেশ্য-সি প্রোগ্রামিং ব্যবহার করছি এবং এটি প্রথম কয়েকটি অধ্যায়গুলিতে সি-তে লিখতে শুরু করে। আমার একটি প্রোগ্রামে এটি আমার তৈরি হয়েছে, আমি স্লিপ ফাংশনটি ব্যবহার করি। বইতে এটি আমাকে অংশের #include <stdlib.h>নীচে রাখতে বলেছে #include <stdio.h>। এটি সেই সতর্কতা থেকে মুক্তি পাওয়ার কথা বলে যা "C99 এ ফাংশন 'স্লিপ' এর অন্তর্নিহিত ঘোষণাটি অবৈধ" বলে মন্তব্য করে। তবে আমি রাখার পরে কোনও কারণে #include <stdlib.h>সতর্কতাটি দূরে যায় না .. এই সমস্যাটি প্রোগ্রামটিকে সূক্ষ্মভাবে চালানো থেকে থামায় না, তবে আমি কেবল কৌতূহলী #includeছিলাম যার জন্য আমাকে ব্যবহার করা দরকার!


3
আরও সহজ প্রশ্ন জিজ্ঞাসা করতে এবং আমাকে সাহায্য করার জন্য যথেষ্ট সাহসী হওয়ার জন্য একটি।
মার্ক অধ্যায়

1
আপনি যদি কোনও মেয়র আইডিই (নেটবিয়ানস, ইন্টেলিজ আইডিইএ, এক্স্লিপস) ব্যবহার করেন। যে কোনও ফাংশনের নাম টাইপ করুন, তারপরে Alt + Enter এটি থাকা লাইব্রেরিটিকে স্বয়ংক্রিয়ভাবে আমদানি করবে।
T04435

2
@ T04435: সি লাইব্রেরিতে আমদানি করা হয় না। সংকলক তাদের প্রয়োজন হয় না । Linker পারে তাদের প্রতি সংযোগ আছে, কিন্তু শুধুমাত্র পরে কম্পাইলার হয় কাজ । সিতে কম্পাইলারের একটি ফাংশন ব্যবহার করতে কোনও ফাংশনের প্রোটোটাইপ দরকার । প্রোটোটাইপগুলি সাধারণত হেডার ফাইলগুলিতে আসে (। এইচ)।
ALK

উত্তর:


163

ঘুম man পৃষ্ঠা তাতে ঘোষিত হয় বলে <unistd.h>

সারমর্ম:

#include <unistd.h>

স্বাক্ষরবিহীন ইনট স্লিপ (স্বাক্ষরবিহীন ইন সেকেন্ড);


1
আমার নেই! ধন্যবাদ! এটি কেবল আমাকে বিরক্ত করার মতো ছিল, কারণ বইটি বলেছিল যে <stdlib.h> সতর্কতা থেকে মুক্তি পাবে ... আজব হাহাহা
@

1
বিলম্ব তৈরির জন্য ঘুম () ফাংশন বা সময় () ব্যবহার করা কি ভাল?
ল্যান্ডনজেকিপিটেলঅফগ্রায়েটব্রিটন

66

sleep একটি অ-মানক ফাংশন।

  • ইউনিক্স-এ, আপনি অন্তর্ভুক্ত করবেন <unistd.h>
  • এমএস-উইন্ডোজ এ, Sleepবরং থেকে হয় <windows.h>

প্রতিটি ক্ষেত্রে ডকুমেন্টেশন চেক করুন।


4
সি স্ট্যান্ডার্ড।
আর্ট পসিক্স

ইউনিক্স-এ, ঘুম আসলেই ঘুমায় এবং এটি সেকেন্ডের পরিবর্তে মাইক্রোসেকেন্ড (মিলিসেকেন্ড * 1000) নেয়।
অ্যাগোস্টিনো

6
নিদ্রা ব্যবহার করবেন না: "4.3BSD, POSIX.1-2-2001। POSIX.1-2001 এই ফাংশনটি অপ্রচলিত ঘোষণা করেছে; পরিবর্তে ন্যানোস্লিপ (2) ব্যবহার করুন P linux.die.net/man/3/us ঘুম
এস-টাইপ

62

আমি ক্রস-প্ল্যাটফর্ম কোডের জন্য এটি ব্যবহার করি:

#ifdef _WIN32
#include <Windows.h>
#else
#include <unistd.h>
#endif

int main()
{
  pollingDelay = 100
  //do stuff

  //sleep:
  #ifdef _WIN32
  Sleep(pollingDelay);
  #else
  usleep(pollingDelay*1000);  /* sleep for 100 milliSeconds */
  #endif

  //do stuff again
  return 0;
}

2
চমৎকার সমাধান, দরকারী
এইচক্রাসকো

15
মার্কিন ঘুম () POSIX.1-2-2008 এ সরানো হয়েছে। ন্যানোস্লিপ () ব্যবহার করুন। linux.die.net/man/3/us ঘুম
এস-টাইপ

13

জন্য sleep()এটা করা উচিত

#include <unistd.h>

8

sleep(3)হয় unistd.h, না stdlib.h। টাইপ করুন man 3 sleepআপনার মেশিনের জন্য নিশ্চিত করতে আপনার কমান্ড লাইন, কিন্তু আমি অনুমান আপনি উদ্দেশ্য সি শেখার করছি যেহেতু আপনি একটি ম্যাক, এবং একটি ম্যাক, আপনি প্রয়োজন unistd.h

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.