Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

CとC++の間の非互換性


ここでは、CとC++の間にいくつかの非互換性があります。 Cコンパイラを使用してコンパイルできるが、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では、externキーワードを使用せずに、グローバルデータオブジェクトを何度も宣言できます。 Cコンパイラは、複数の宣言に対して1回それを考慮します。

#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では、任意のポインター型の変数への代入または初期化の右辺演算子としてvoidポインターを使用できます。

#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()'

  1. C ++とC#のどちらが速いですか?

    C++は中級レベルの言語です。 1979年にBjarneStroustrupによって開発されました。これは、C言語とオブジェクト指向言語の単なる拡張です。 C#は、AndersHejlsbergによって開発された最新のオブジェクト指向言語です。これは.NETFrameworkの一部です。共通言語インフラストラクチャ(CLI)用に設計されています。また、人気のある言語です。 C ++とC#の違い どちらの言語もオブジェクト指向言語です。 C ++の抽象化レベルは低く、C#の抽象化レベルは高くなっています。 C ++では、プログラムは任意のプラットフォーム用にコーディングでき

  2. C ++とC#の違い

    C ++は、静的に型付けされ、コンパイルされた、汎用の、大文字と小文字を区別する、自由形式のプログラミング言語であり、手続き型、オブジェクト指向、およびジェネリックプログラミングをサポートします。 C ++は、高水準言語と低水準言語の両方の機能の組み合わせで構成されているため、中水準言語と見なされます。 C#は、アンダース・ヘルスバーグが主導する.NETイニシアチブ内でMicrosoftが開発した、シンプルでモダンな汎用のオブジェクト指向プログラミング言語です。 以下は、C ++とC#の違いです。 メモリ管理 C ++には手動のメモリ管理がありますが、メモリ管理はC#で自動的に処理され