सी ++ में <fcntl.h>
और <unistd.h>
का व्यवहार मानक द्वारा निर्दिष्ट नहीं है (क्योंकि वे C89 मानक का भी हिस्सा नहीं हैं)। उस ने कहा, मैंने कभी ऐसा मंच नहीं देखा है जहां वे (ए) मौजूद हैं और (बी) वास्तव में extern "C"
ब्लॉक में लपेटने की आवश्यकता है।
<stdio.h>
, <math.h>
का व्यवहार, और अन्य मानक सी शीर्षलेख C++ 03 मानक के अनुभाग डी.5 द्वारा निर्दिष्ट किया गया है। उन्हें extern "C"
रैपर ब्लॉक की आवश्यकता नहीं है, और वे अपने प्रतीकों को वैश्विक नामस्थान में डंप करते हैं। हालांकि, एनेक्स डी में सबकुछ "बहिष्कृत" है।
विहित सी ++ उन हेडर के रूप में, <cstdio>
है <cmath>
, आदि, और वे खंड 17.4.1.2 द्वारा निर्दिष्ट (3) सी ++ मानक, जो कहते हैं की:
<cassert> <ciso646> <csetjmp> <cstdio> <ctime> <cctype> <climits>
<csignal> <cstdlib> <cwchar> <cerrno> <clocale> <cstdarg> <cstring>
<cwctype>
के रूप में छोड़कर क्लॉज 18 से 27 में उल्लिखित, प्रत्येक शीर्षलेख की सामग्री cname इसी शीर्षलेख नाम.h के समान होगी, आईएसओ/आईईसी 98 99: 1 99 0 प्रोग्रामिंग भाषा सी (क्लॉज 7), या आईएसओ/आईईसी: 1 99 0 प्रोग्रामिंग भाषा-सी संशोधन 1: सी ईमानदारी, (खंड 7), एपी के रूप में मालिकाना, जैसे कि शामिल करके। सी ++ मानक लाइब्रेरी में, हालांकि, घोषणाओं और परिभाषाओं ( नामों के अलावा सी में मैक्रोज़ के रूप में परिभाषित नामों को छोड़कर) नामस्थान std के नामस्थान स्कोप (3.3.5) के भीतर हैं।
तो मानक, गैर पदावनत, विहित तरीके से उपयोग करने (जैसे) सी ++ में printf
#include <cstdio>
है और फिर std::printf
आह्वान।
बस यह प्रश्न आपके जैसा ही पाया गया है: [हमें सी ++ में बाहरी "सी" {#in33e} क्यों चाहिए?] (Http://stackoverflow.com/questions/67894/why-do-we-need -अंटर-सी-इन-फू-एच-इन-सी) –
AusCBloke