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