यहाँ हम C और C++ के बीच कुछ असंगतियाँ देखेंगे। कुछ सी कोड जिन्हें सी कंपाइलर का उपयोग करके संकलित किया जा सकता है, लेकिन सी ++ कंपाइलर में संकलित नहीं होता है। और त्रुटि भी देता है।
- हम एक सिंटैक्स का उपयोग करके फ़ंक्शन को परिभाषित कर सकते हैं, जो वैकल्पिक रूप से तर्क सूची के बाद तर्क प्रकार निर्दिष्ट करता है।
उदाहरण
#include<stdio.h> void my_function(x, y)int x;int y; { // Not valid in C++ printf("x = %d, y = %d", x, y); } int main() { my_function(10, 20); }
आउटपुट
x = 10, y = 20
आउटपुट
Error in C++ :- x and y was not declared in this scope
- C, या C++ के कुछ पुराने संस्करण में, डिफ़ॉल्ट चर प्रकार पूर्णांक है। लेकिन नए C++ में, यह एक त्रुटि उत्पन्न करेगा।
उदाहरण
#include<stdio.h> main() { const x = 10; const y = 20; printf("x = %d, y = %d", x, y); }
आउटपुट
x = 10, y = 20
आउटपुट
Error in C++ :- x does not name a type y does not name a type
- C में, बाहरी कीवर्ड का उपयोग किए बिना वैश्विक डेटा ऑब्जेक्ट को कई बार घोषित किया जा सकता है। सी कंपाइलर इसे एक बार कई घोषणाओं के लिए मानता है।
उदाहरण
#include<stdio.h> int x; int x; int main() { x = 10; printf("x = %d", x); }
आउटपुट
x = 10
आउटपुट
Error in C++ :- Redefinition of int x
- C में, हम किसी भी पॉइंटर प्रकार के वेरिएबल को असाइनमेंट या इनिशियलाइज़ करने के लिए राइट हैंड ऑपरेटर के रूप में शून्य पॉइंटर का उपयोग कर सकते हैं।
उदाहरण
#include<stdio.h> #include<malloc.h> void my_function(int n) { int* ptr = malloc(n* sizeof(int)); //implicitly convert void* to int* printf("Array created. Size: %d", n); } main() { my_function(10); }
आउटपुट
Array created. Size: 10
आउटपुट
Error in C++ :- Invalid conversion of void* to int*
- C में, यदि तर्क प्रकार निर्दिष्ट नहीं है, तो हम कई तर्क पारित कर सकते हैं।
उदाहरण
#include<stdio.h> void my_function() { printf("Inside my_function"); } main() { my_function(10, "Hello", 2.568, 'a'); }
आउटपुट
Inside my_function
आउटपुट
Error in C++ :- Too many arguments to function 'void my_function()'