プロが教える店舗&オフィスのセキュリティ対策術

C言語プログラムに関して。
ヘッダファイルを含んでいるプログラムをヘッダファイルなしの標準関数のみで表す方法はないでしょうか?
コンパイラはgccです。
ようはコンパイラが知っている最低限のC言語の標準関数のみでプログラムを出力したいのです。

A 回答 (4件)

標準ヘッダを #include しなくても, 標準ライブラリ関数のプロトタイプをちゃんと自力で書けばなにも問題ない.

    • good
    • 1

コンパイラが知っている最低限のC言語の標準関数・・・なんてものはありません。


これをシステムコールのことだとするならば(システムコールのこともコンパイラは知りませんが)、
D.J.Bernsteinさんが作ったソフトウェアが参考になるかもしません。
http://cr.yp.to/

最近はあまり使われなくなりましたが、qmailというメールサーバは非常に有名です。
    • good
    • 0

> コンパイラが知っている最低限のC言語の標準関数のみでプログラムを出力したいのです。



仕様上、「出力」関数はstdio.hで定義されていて、それ以外はCにはありません。
故に

> ヘッダファイルなしの標準関数のみで

だと出力さえも出来ないのです。
    • good
    • 0

コンパイラが知っている関数?


intrinsic 関数のことでしょうか?
Microsoft のコンパイラならば、_outp( port, value ); といった特殊関数をインラインで生成することができますが、ANSI の規格からは外れた方言のようなものです。
一般的には、コンパイラに外部関数の仕様を教えるのがヘッダファイルの主な目的です。
標準関数に関しては
#include <ファイル.h>
自作関数に関しては
#include “ファイル.h”
と指定します。
ヘッダファイルを使用しないプログラムとなると、OS のカーネルや組込システムのファームウェアなど、低レベルのコードを生成するなどの特殊な目的位しか考えられません。
勿論 OS が提供するシステムコールも利用できません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!