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は欠かせないキーワードです。
-
C/C++のmemcpy()関数の使い方と実例解説
この記事では、C++ STLにおけるmemcpy()関数の動作、構文、および具体的な使用例について詳しく解説します。 memcpy()とは? memcpy()関数は、C++ STLに組み込まれた標準関数の一つで、<cstring>ヘッダーファイルで定義されています。この関数はメモリブロックをコピーするために使用され、あるメモリ位置から別のメモリ位置へ、指定されたバイト数分のデータを転送します。 関数の実行結果は、データのバイナリコピーとなります。重要な点として、memcpy()は終端のNULL文字やその他の終端記号をチェックしません。単純にソースから指定されたバイト数(num)をそ
-
C/C++で学ぶAA木(AA Tree)とは?基本概念と平衡化操作を徹底解説
AA木(AA Tree)とはコンピュータサイエンスにおいて、AA木(AA Tree)とは、順序付きデータを効率的に格納・検索するために実装された平衡木(バランスドツリー)の一種です。AA木は、赤黒木(Red-Black Tree)の変種として扱われます。赤黒木は二分探索木の一形態であり、要素の追加や削除を効率的にサポートします。赤黒木と大きく異なる点は、AA木では赤いノードを右の子としてのみ追加でき、左の子としては配置できないという制約があることです。この制約により、2-3-4木ではなく2-3木をシミュレートすることになり、その結果、木の保守操作が大幅に簡素化されます。赤黒木の平衡化アルゴリズ