2011-11-10 13 views
6

एक POSIX अनुपालन वातावरण में घोषित सी कार्यों की घोषणा प्राप्त करने के लिए मुझे सी ++ प्रोग्राम में शामिल करने के लिए सही सी शीर्षलेख कहां या कैसे मिल सकता है?सी POSIX फ़ंक्शन के लिए शीर्षलेख

मैं क्योंकि मैं अपने सी मेरी प्रयोजनों के लिए ++ कार्यक्रम में open() सिस्टम कॉल का उपयोग करने के लिए आवश्यक यह पूछ रहा हूँ, इसलिए मैं शुरू में हेडर open() के बारे में (SYNOPSIS खंड में) ऑनलाइन दस्तावेज में उल्लेख किया है, जो कर रहे हैं शामिल करने की कोशिश की sys/stat.h और fcntl.h। हालांकि संकलन करने की कोशिश करते समय, संकलक ने शिकायत की कि open() घोषित नहीं किया गया था। Google पर एक खोज के बाद, मैंने पाया कि एक और संभावना unistd.h थी। मैंने उस हेडर और प्रोग्राम संकलित करने का प्रयास किया। का उल्लेख किया गया था, तो मुझे unistd.h के बारे में अधिक पढ़ने के लिए POSIX दस्तावेज़ पर वापस चला गया, लेकिन मुझे इसके बारे में कुछ भी नहीं मिला।

मैं क्या गलत कर रहा हूं? POSIX दस्तावेज़ और मेरे जीसीसी पर्यावरण के बीच यह विसंगति क्यों है?

उत्तर

8

मेरी लिनक्स डेबियन/सिड पर, man 2 open पेज कहता है:

SYNOPSIS 
    #include <sys/types.h> 
    #include <sys/stat.h> 
    #include <fcntl.h> 

तो तुम सब तीनऊपर फ़ाइलों शामिल करने के लिए की जरूरत है। और open को /usr/include/fcntl.h में घोषित किया गया है, लेकिन अन्य दो में घोषणा की आवश्यकता है।

और निम्न परीक्षण फ़ाइल

/* file testopen.c */ 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <fcntl.h> 

int 
testopen (void) 
{ 
    return open ("/dev/null", O_RDONLY); 
} 

कोई चेतावनी के बिना gcc -Wall -c testopen.c साथ संकलित करता है।

संबंधित मुद्दे