C言語の関数指定子とは?_Noreturnの意味と使い方を解説
関数指定子とは
CおよびC++には、関数の性質をコンパイラに指示するための「関数指定子(function specifier)」が用意されています。関数指定子を使うことで、その関数がどのような振る舞いをするのかを明示的に宣言できます。
- C++:
inline関数指定子を持つ - C(C11以降):
_Noreturn関数指定子を持つ
_Noreturnは、その関数が呼び出し元へ制御を返さないことをコンパイラに伝えるための指定子です。本来はexit()やabort()のようにプログラムを終了させる関数に対して使用します。
通常の関数の例
#include<stdio.h>
int myAdd(int a, int b){
return a + b;
}
main() {
int x = 10, y = 20;
printf("The value is: %d\n", myAdd(x, y));
}
実行結果
The value is: 30
このように、通常の関数であれば何も問題なくコンパイル・実行できます。
_Noreturnを付けた場合の例
次に、値を返す関数に誤って_Noreturnを付けた場合を見てみましょう。この場合、コンパイラは警告を出力し、プログラムはエラーとなって終了します。
#include<stdio.h>
_Noreturn int myAdd(int a, int b){
return a + b;
}
main() {
int x = 10, y = 20;
printf("The value is: %d\n", myAdd(x, y));
}
実行結果(警告)
[Warning] function declared 'noreturn' has a 'return' statement [Warning] 'noreturn' function does return
「noreturn」と宣言された関数にreturn文が存在していることを示す警告が出力されています。_Noreturnを指定した関数では、exit()などを呼び出して必ず制御を返さない形で実装する必要があります。値を返す通常の関数に付けてしまうと、上記のような警告やエラーの原因となるため注意しましょう。
-
C言語のbar()関数とは?グラフィックスで塗りつぶし矩形を描く方法
bar() 関数は、C言語のグラフィックス描画に使用される関数の一つです。図形を描くための各種関数がまとめられた graphics.h ヘッダーファイルの中に定義されており、このヘッダーをインクルードすることで利用できます。bar()関数の構文void bar(int left, int top, int right, int bottom);bar() 関数は、棒グラフの「バー」のような2次元の図形、すなわち塗りつぶされた長方形を描画するために使われます。引数は4つあり、それぞれ以下の座標を指定します。left / top: 長方形の左上隅の (X, Y) 座標right / bottom:
-
C#の列挙型(Enum)とは?基本的な使い方をサンプルコード付きで解説
C#における列挙型(Enum:Enumeration)は、曜日、月、季節、製品カテゴリなど、関連する一連の名前付き定数をひとつのグループとして格納するためのデータ型です。Enumの定数にはデフォルトで0から始まる整数値が自動的に割り当てられ、宣言された順番に1ずつ増加していきます。定数のセットは固定されており、ループ処理などで簡単に走査(トラバース)できるのも大きな特徴です。Enumの基本的な特徴関連する名前付き定数をひとまとめに管理できる最初の定数にはデフォルトで「0」が割り当てられ、以降は1ずつ増加する値は明示的に変更することも可能型安全性が高く、無効な値の代入をコンパイル時に防げるEnu