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

こんにちわ。大学でC++を勉強している者です。授業のプロジェクトで自分の作ったC++のプログラムを大学のLinuxサーバでコンパイルしたところ問題なくコンパイルが通り、動作確認も出来たのですが、それを教授に提出したところ、コンパイルが出来ませんと言われました。どうやら教授は若干大学の研究室のコンピュータと違う環境でコンパイルした模様です。教授の部屋に行ってエラーを見たところ、exit, srand, rand等の関数が見つかりませんと言われていました。どれもstdlib.hに属する関数だと思い、#include <stdlib.h>を入れて再提出したところ問題が解決した。が、どうして研究室のマシンではエラーが起きなかったのかが未だにわかりません。g++のコンフィグにデフォルトのinclude文を定義するところがあってそれが違ってたのではないかとか思っているのですが、確かな情報が未だにつかめていません。教授に聞いたのですが、彼はネットワークが専門でC++の専門ではないので「わかりません」とあっさり言われてしまいました。。。環境についてですが、わかっているのは研究室のマシンがCentOS release 5.5だということだけ。教授のマシンは不明です。宜しくお願いします。

A 回答 (1件)

それらは、GCCのビルトイン関数と呼ばれるものです。


GCCに組込まれているもので、特定のヘッダをincludeしているわけではありません。

無効にする方法、その他、詳しくは
http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/C-Di …
http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Othe …
あたりを。何がビルトインになっているかは、バージョンによって違いがあります。


> どれもstdlib.hに属する関数だと思い

まともな解説書、マニュアルなら、特定の標準関数を使いたいときに、#includeにどのファイルを指定すればいいか明記されているはずです。
    • good
    • 0
この回答へのお礼

なるほど!!!ビルドイン関数ですね!!!すごく解決した気がします。というのも、研究室にはCentOS 5.5とCentOS 6.3があって、CentOS 6.3のマシンではこのエラーが起きることがわかったのです。恐らくCentOSがバージョンアップした段階でg++のビルトイン関数もアップデートされたのでしょうか。教授にも教えてときます。どうも有難う御座いました。

お礼日時:2012/12/15 12:20

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