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

C++でコンパイルされないCプログラム


C ++言語は、Cでのオブジェクト指向の概念などのいくつかの追加機能を追加することによって設計されています。ほとんどのCプログラムは、C++コンパイラを使用してコンパイルすることもできます。 C++コンパイラを使用してコンパイルできないプログラムもあります。

Cコンパイラではコンパイルされますが、C++コンパイラではコンパイルされないコードをいくつか見てみましょう。

このプログラムでは、C++コードのコンパイルエラーが1つ発生します。以前に宣言されていない関数を呼び出そうとしているためです。しかし、Cではコンパイルされる可能性があります

Cの場合。

#include<stdio.h>
int main() {
   myFunction(); // myFunction() is called before its declaration
}
int myFunction() {
   printf("Hello World");
   return 0;
}

出力(C)

Hello World

出力(C ++)

[Error] 'myFunction' was not declared in this scope

C ++では、1つの通常のポインターは一部の定数変数を指すことができませんが、Cではそれを指すことができます。

Cの場合。

#include<stdio.h>
int main() {
   const int x = 10;
   int *ptr;
   ptr = &x;
   printf("The value of x: %d", *ptr);
}

出力(C)

The value of x: 10

出力(C ++)

[Error] invalid conversion from 'const int*' to 'int*' [-fpermissive]

C ++では、int *、char *などの他のポインター型をvoidポインターに割り当てる場合は、明示的に型キャストする必要がありますが、Cでは、型キャストされていない場合はコンパイルされます。

Cの場合。

#include<stdio.h>
int main() {
   void *x;
   int *ptr = x;
   printf("Done");
}

出力(C)

Done

出力(C ++)

[Error] invalid conversion from 'void*' to 'int*' [-fpermissive]

C ++では、定数変数を初期化する必要がありますが、Cでは、初期化せずにコンパイルできます。

Cの場合。

#include<stdio.h>
int main() {
   const int x;
   printf("x: %d",x);
}

出力(C)

x: 0

出力(C ++)

[Error] uninitialized const 'x' [-fpermissive]

Cでは、「new」という名前の変数を使用できます。ただし、C ++では、「new」がキーワードであるため、この名前を変数名として使用することはできません。これは、メモリスペースを割り当てるために使用されます。

Cの場合。

#include<stdio.h>
int main() {
   int new = 10;
   printf("new: %d",new);
}

出力(C)

new: 10

出力(C ++)

[Error] expected unqualified-id before 'new'
[Error] expected type-specifier before ')' token

次のコードをC++でコンパイルすることはできません。これは、intをchar*に変換しようとしたときにエラーを返します。ただし、Cでは正常に機能します。

Cの場合。

#include<stdio.h>
int main() {
   char *c = 123;
   printf("c = %u", c);
}

出力(C)

c = 123

出力(C ++)

[Error] invalid conversion from 'int' to 'char*' [-fpermissive]

Cではmain()の戻り型としてvoidを使用できますが、C ++ではmain()の戻り型としてintを使用する必要があります。

Cの場合。

#include<stdio.h>
void main() {
   printf("Hello World");
}

出力(C)

Hello World

出力(C ++)

[Error] '::main' must return 'int'

  1. Windows10でアンインストールされないプログラムをアンインストールする方法

    プログラムを削除しようとしましたが、そのプログラムはWindows10PCでアンインストールされません。これはさまざまな理由で発生しますが、その一部はプログラムではなくシステムに関連しています。 幸いなことに、簡単な手順に従うことで、ほとんどのアンインストールの問題を修正できます。その後、通常どおりにプログラムを削除できるようになります。 設定を使用してWindows10プログラムをアンインストールする Windows 10にインストールされているアプリを削除する最も簡単な方法は、組み込みの設定アプリを使用することです。コントロールパネルまたは別の方法でアプリを削除しようとしている

  2. C ++プログラムでの二分探索?

    二分探索は、半区間探索、対数探索、または二分探索とも呼ばれ、ソートされた配列内のターゲット値の位置を見つける検索アルゴリズムです。二分探索は、ターゲット値を配列の中央の要素と比較します。それらが等しくない場合、ターゲットが存在できない半分が削除され、残りの半分で検索が続行され、再び中央の要素がターゲット値と比較され、ターゲット値が見つかるまでこれが繰り返されます。残りの半分が空の状態で検索が終了した場合、ターゲットは配列に含まれていません。アイデアは単純ですが、バイナリ検索を正しく実装するには、特に配列の値が範囲内の整数のすべてではない場合、終了条件と中間点の計算に関する微妙な点に注意する必要