C言語でヘッダーファイルなしに「Hello World」を出力する方法
C/C++言語では、通常、ヘッダーファイルをインクルードすることで、int型やchar型、文字列操作関数などの組み込み関数を利用できるようにします。コンソールにデータを出力するためのprintf()関数も組み込み関数の一つで、「stdio.h」ヘッダーファイル内で宣言されています。
しかし、実はヘッダーファイルを使用しなくても、関数のプロトタイプ宣言を自分で記述すればprintf()を呼び出すことが可能です。ここでは、C言語でヘッダーファイルなしに「Hello World」を出力する方法を紹介します。
サンプルコード
#include <stdio.h> を使わずに printf を宣言
int printf(const char *text, ...);
int main(void) {
printf("Hello World");
return 0;
}実行結果
Hello World
プログラムの解説
上記のプログラムでは、ヘッダーファイルを一切インクルードせずに「Hello World」を出力しています。その鍵となるのが、プログラムの先頭にある次の宣言です。
int printf(const char *text, ...);
これはprintf()関数のプロトタイプ宣言(関数宣言)です。C言語では、関数を呼び出す前にその関数の戻り値の型と引数の型がコンパイラに知らされていればよく、必ずしもヘッダーファイル経由である必要はありません。
「stdio.h」の中身も結局のところ、このような関数宣言の集まりにすぎません。つまり、必要な宣言だけを手動で記述すれば、ヘッダーファイルを省略しても同じように動作するという仕組みです。
注意点
- この方法は動作しますが、実際の開発では標準ヘッダーをインクルードするのが推奨されます。宣言の誤りや環境依存の問題を防げるためです。
- 可変個引数を持つ関数(
...)の宣言を間違えると、未定義動作を引き起こす可能性があります。
-
【Python】ループを使わずに数列を出力する方法:再帰呼び出しを活用した実装
はじめに 本記事では、以下の問題に対する解決策について詳しく解説します。 問題の概要 2つの整数 N と K が与えられたとき、N が 0 より大きい間は N から K を引き続けます。そして N が 0 以下になったら、今度は元の値 N に戻るまで K を足していきます。 入力例 N = 10 K = 4 出力例 10 6 2 -2 2 6 10 アルゴリズムの考え方 N が 0 より大きい間、関数を再帰的に呼び出し続けます(各呼び出しごとに N から K を減算します)。 数値が 0 以下になったら、元の値に戻るまで各呼び出しごとに K を加算します。 加算と減算は同じ1つの関数
-
ループを使わずに数列を出力するPythonプログラム|再帰とフラグで実現する方法
本記事では、for文やwhile文などのループ構文を一切使わずに数列を表示するという問題の解法について解説します。問題の定義問題: 2つの数値 N と K が与えられます。まずNが0より大きい間はNからKを繰り返し引き、Nが0以下(ゼロまたは負)になったら、今度は逆にKを足していきます。そして値が元の数値Nに戻った時点で処理を終了します。実行例N = 10K = 4出力: 10 6 2 -2 2 6 10アルゴリズムNが0より大きい間、関数を再帰的に呼び出し続けます。各呼び出しのたびにNからKを減算します。数値が0以下になったら加算モードに切り替え、各呼び出しごとにKを加算します。元の数値Nに