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

C/C++におけるexternキーワードの使い方を徹底解説

externキーワードとは

外部変数は「グローバル変数」とも呼ばれます。これらの変数は関数の外側で定義され、プログラムの実行中はどこからでもアクセス可能です。C/C++では、「extern」キーワードを使って外部変数を宣言・定義します。

また、「extern "C"」という記述は、C言語で実装・コンパイルされた関数をC++側で宣言するために使用されます。これにより、C++のコードからC言語のライブラリをそのまま利用できるようになります。C++では関数名マングリング(name mangling)が行われるため、C言語と同じリンケージを持たせる目的でもこの指定が重要です。

externの基本構文

extern データ型 変数名; // externによる変数の宣言
extern データ型 関数名(); // externによる関数の宣言

各要素の意味は以下の通りです。

  • データ型 ― int、char、floatなど、変数の型を指定します。
  • 変数名 ― プログラマが自由に決められる変数の名前です。
  • 関数名 ― 対象となる関数の名前です。

externの使用例

以下に、externを使った具体的なサンプルコードを示します。

#include <stdio.h>
extern int x = 32;
int b = 8;
int main() {
    extern int b;
    printf("The value of extern variables x and b : %d,%d\n",x,b);
    x = 15;
    printf("The value of modified extern variable x : %d\n",x);
    return 0;
}

実行結果

The value of extern variables x and b : 32,8
The value of modified extern variable x : 15

コードの解説

上記のプログラムでは、2つの変数xとbがグローバル変数として宣言されています。

extern int x = 32;
int b = 8;

main()関数内では、変数bをexternとして再宣言して参照し、それぞれの値を出力しています。

extern int b;
printf("The value of extern variables x and b : %d,%d\n",x,b);
x = 15;
printf("The value of modified extern variable x : %d\n",x);

このようにexternを活用することで、複数のファイル間で変数や関数を共有したり、C言語で書かれた資産をC++プロジェクトで再利用したりすることが可能になります。大規模な開発において、ヘッダファイルでの宣言とソースファイルでの定義を適切に分離する際にも、externは欠かせないキーワードです。

  1. C/C++のmemcpy()関数の使い方と実例解説

    この記事では、C++ STLにおけるmemcpy()関数の動作、構文、および具体的な使用例について詳しく解説します。 memcpy()とは? memcpy()関数は、C++ STLに組み込まれた標準関数の一つで、<cstring>ヘッダーファイルで定義されています。この関数はメモリブロックをコピーするために使用され、あるメモリ位置から別のメモリ位置へ、指定されたバイト数分のデータを転送します。 関数の実行結果は、データのバイナリコピーとなります。重要な点として、memcpy()は終端のNULL文字やその他の終端記号をチェックしません。単純にソースから指定されたバイト数(num)をそ

  2. C/C++で学ぶAA木(AA Tree)とは?基本概念と平衡化操作を徹底解説

    AA木(AA Tree)とはコンピュータサイエンスにおいて、AA木(AA Tree)とは、順序付きデータを効率的に格納・検索するために実装された平衡木(バランスドツリー)の一種です。AA木は、赤黒木(Red-Black Tree)の変種として扱われます。赤黒木は二分探索木の一形態であり、要素の追加や削除を効率的にサポートします。赤黒木と大きく異なる点は、AA木では赤いノードを右の子としてのみ追加でき、左の子としては配置できないという制約があることです。この制約により、2-3-4木ではなく2-3木をシミュレートすることになり、その結果、木の保守操作が大幅に簡素化されます。赤黒木の平衡化アルゴリズ