締切済み のぞき 2006/02/10 23:20 EILE構造体などがはいっている stdio.h ヘッダファイルや標準ライブラリ関数が入っているファイルのぞく事出来ますか? みんなの回答 (2) 専門家の回答 みんなの回答 jacta ベストアンサー率26% (845/3158) 2006/02/10 23:44 回答No.2 処理系が特定されていないようなので... 一般論としては、必ずしものぞけるとは限りません。 標準ヘッダは、#include指令で取り込んだ際に、必要な宣言定義が行われればよいのであって、常にファイルを用いて実現されるというわけではありません。 関数に関しても、実現方法は処理系に依存します。ただ、16進ダンプや逆アセンブルなどでのぞくことなら、大抵は可能です。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 anmochi ベストアンサー率65% (1332/2045) 2006/02/10 23:26 回答No.1 ヘッダファイルは単なるテキストファイルなのでいくらでものぞけるかと。stdio.hを探してテキストエディタで開いてください。 標準ライブラリ関数が、プロトタイプ宣言を意味しているのであればstdio.hが入っているディレクトリに他にもいっぱいヘッダファイルがあると思うのでそれを開きましょう。ライブラリのソースが見たいという事であればコンパイラ作成者に相談という事になります。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発C・C++・C# 関連するQ&A C/C++のヘッダーファイルやライブラリー関数について C言語の勉強をはじめました。コードの最初に書く#include<stdio.h>などの ヘッダーファイルやライブラリ関数を見ることはできるのでしょうか? 初歩的なことですみませんがよろしくお願い致します。 C言語について。 「色んな物が定義・宣言されている」からです。 バッファだけが定義されているなら「など」とは書きません。 stdio.hには「外部のライブラリの中にバッファやら関数やらが色々とあります」と、外部宣言されています。必要な「定数」も定義されています。 その中には「入出力バッファ」や「FILE構造体」など、色々とあります。それこそ「など」が必要なくらい、色んな物が定義されています。 で、説明の一部で、 stdio.hには「外部のライブラリの中にバッファやら関数やらが色々とあります」と、外部宣言されています。必要な「定数」も定義されています。 その中には「入出力バッファ」や「FILE構造体」など、色々とあります。それこそ「など」が必要なくらい、色んな物が定義されています。 の外部というのは、どういうことでしょうか?stdio.hのライブラリの中に、また別のライブラリがあるということでしょうか? stdio.hは何のためにあるのでしょうか? stdio.hは何のためにあるのでしょうか? 標準関数をまとめたライブラリですが、 「標準」と呼ばれるぐらいなので、 includeしなくても使えるように最初からすればよいと思っています。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム ヘッダーの記述方法<XX.h>と"XX.h"の違い タイトルのままですが、質問はヘッダーの書き方についてです。 読み込むヘッダーの記述方法は、<>と""の2通りであることは知っていますが、その違いがよく分かりません。 今まで見た参考書だと「<>は標準関数で、""は自作関数の場合に使う」と書かれているのですが、私の環境(VC++)だとstdio.hを""で括っても何の問題も無く、実行ファイルが出来ます。 そうなっているからなのかもしれませんが、どうもよく理解できませんので、回答お願いいたします。 標準ヘッダファイルの中身は何に依存? stdio.h等の標準ヘッダファイルについて質問です。 HP-UX11.00でコンパイルが通っていたプログラムをHP-UX11.11に移植しようとしているのですが、うまくコンパイルが通りません。 stdio.hを取り込んだ辺りですでにエラーが出ているようなのでHP-UX11.00上のstdio.hをプログラムと同じ階層にコピーして、プログラム内でincludeする際に、静的にコピーしてきたファイルを指定しました。 これでコンパイルをするとエラーが無くなり、動作確認をしてみるとうまく動いているようなのですが、標準ヘッダファイルは、このように違うバージョンのOS上からコピーしてきて使っても平気なのでしょうか? 標準ヘッダファイルの中身は何に依存しているか教えてください。 構造体と構造体型の変数宣言箇所 はじめてborlandC++builder6でプログラムを作っているのですが、構造体と構造体型の変数宣言箇所についてわからないことがあるので質問させてください。 あるフォームのソースファイル(○○○.cpp)内の関数で、自分で定義した構造体を使う場合、ヘッダファイル(○○○.h)に構造体を定義すると、関数内で「変数が未定義」エラーになってしまいます。一方、ソースファイル(○○○.cpp)の先頭に書けばエラーになりません。 ヘッダファイルに変数定義した場合とソース内の先頭に構造体と構造体型変数を定義するのでは何が違ってくるのでしょうか? 基本的なことを勉強したあとはどうすればよいのでしょうか。 基本的なことを勉強したあとはどうすればよいのでしょうか。 入門書などで、ポインタや構造体など一通りのことを勉強しましたが、使っている関数が <stdio.h>の標準関数だけでした。 この標準関数というものを調べてみましたが、どうやらあまり高機能でないというか Windowsで使えるようなアプリケーション開発を行うのは無理があるようです といっても、すぐにアプリケーションが作れるとは思っていないのですが このあとどういう勉強をしたらよいでしょうか。 最終的な目標としては、C言語を通してOSの仕組みやPCの基本的な構造を理解できればと思っています。 ヘッダファイルとは? ヘッダファイルを作って、そこに構造体を送りたいのですが、 「引数宣言は 'data' で始められない」というエラーがヘッダファイル側で起きてしまいます。 main()で作ったからいけないのでしょうか? 分かる方教えていただけませんか? #include<stdio.h> #include "Max_Score.h" /*構造体の宣言*/ typedef struct data{ ・・・・・; }DATA; void main(){ DATA data[50]; ・・・・・・・・; Max_Score(data); } /*Max_Score()側*/ void Max_Score(data *p){ ・・・・・; } C++ヘッダの肥大化 最近、テンプレートクラスとインライン関数を多用しているため、ヘッダファイルの肥大化が気になります。 ヘッダが肥大化するとコンパイル時間も大きくなり、更にヘッダファイルの可読性も落ちてしまうと思います。 また、ライブラリ化するときはコードを隠蔽したいのですが、ほとんどがヘッダファイルに実体があるため隠蔽できません。 インライン関数やテンプレートクラス、テンプレート関数は必ずヘッダファイルに書く必要があるのでしょうか。 標準ヘッダファイルでは「*.cc」という実体コードをインクルードしているので、それに習うべきなのでしょうか。 C言語のソースをC++言語に変換したい C言語で書かれていたソースをC++言語に変換したいのですが どのような点に気をつければよいでしょうか 現在、プログラムの主な構造は構造体とそれを扱う関数が実装されていて、 これらをクラスを使用して書き換えようと思います。 それ以外に気にしておくものはありますか。 例えば、ヘッダファイルで<stdio.h>をインクルードしているところがありますが、 これは<cstdio>に書き換えたほうがよいかもしれない、と言われたことはあります。 printfなどはprintfのまま使用しても大丈夫ですか。 std::printfに書き換えたり、iostreamを使用する方法に書き換えたほうがいいですか。 規格としてはどのようになっているのでしょうか。 (「過去との互換性のためにあるだけであり、非推奨」とかあったりしますか。) ヘッダファイルの基本から作り方 非常に基本的事かもしれませんが、意外とテキスト載ってないので聞きます。ヘッダファイル(stdio.hやctype.hなど最初からあるものを除く)の基本的役目ってなんですか?そして、これからより複雑なプログラムとなるとヘッダファイルを作成しなければいけないようですが、そのヘッダファイルのつくり方(ルールなど)をおしえてください。 CからC++に移る前に こんにちは、はじめまして。 もうそろそろCを習得したと思うんですが、以下の事を知っているだけでC++に移れるでしょうか? ・関数の 使い方・作り方 ・マクロ定義 ・構造体 ・ヘッダファイル ・if,for,while,return ・ポインタ(良くわかんないけど値を参照して負荷減らすとか直接内容を変えるとか...) ・ライブラリ 他に何か覚えるべき知識があれば書いて頂けると嬉しいです。 あとお勧めのC++入門書を紹介してもらえると助かります。 チキンですみません、宜しくお願いします。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム string.h とかって何? #include で最初に含むファイルっていったい何者なんでしょうか? rand()を使うにはstdlib.hをインクルードしますし、printfのような入出力関係にはstdio.hを、文字関係ならstring.hを・・。 それはわかるのですが、これは、それぞれのヘッダファイルに自作関数の集合のようなものが入っていると考えるのは間違いなんでしょうか? 例えば、strcpyを使用するにはstring.hをインクルードするべきですが、 それはstring.hの中に char *strcpy(char *s1, const char *s2) { char *p = s1; while (*s1++ = *s2++) ; return (p); } みたいな記述が入っていると想像するのは間違いですか? 自作関数を集めてヘッダファイルにする事出来ますけど、これらは違うんですか? これだとprintfとかどうやって実装しているんだって思ってしまって・・。 直接stdio.hを開いてみたものの意味不明で、其の中にさらにある.hファイルも開いてみましたがよくわかりませんでした・・。 すみませんが、よろしくお願いします>< ライブラリ関数と同名のメンバ関数 たとえば、以下のように fclose という メンバ関数を定義し、このクラスの実装のなかで 標準ライブラリ関数 fclose を呼びたいときには どうすれば良いのでしょうか。 別の名前にするというのは無しでお願いします。 #include <stdio.h> class MyFile { public: int fclose(FILE* fp); }; int MyFile::fclose(FILE* fp) { printf("閉じました\n"); fclose(fp); // 標準ライブラリ関数のfcloseを呼びたい return 0; } main() { FILE *fp=NULL; MyFile f; f.fclose(fp); return 0; } XSUB.h、EXTERN.h、perl.h について ◆状況 C言語+Perlで作られている機能を、 Perlだけのソースに移行しようとしています。 ◆困っていること 今まで、知らない言語を読む際、 ネットや本にある、関数一覧などから、 「そのプログラムで何をしようとしているか?」 を読み取れていたのですが、 C言語+Perlにおける、下記の関数??と思われるものなどについて、 全然、資料/情報が見つからず、困っています。 具体的には、 dXSARGS Perl_croak SvPV_nolen XPUSHs PUTBACK などです。 (恐らくは、EXTERN.h、perl.h、XSUB.h というヘッダファイルに定義されているのかも知れませんが。) stdio.h などにあるような、fopen関数だったり、fscanf関数などのようなものは、 いくらでもネット上/本に載っているのですが、上述のものについて、全然見つかりません、、 /***********************************/ また、includeファイルに、定数、構造体の定義、関数のプロトタイプ、マクロの定義、が記述されると認識していますが、 しかしながら、 ソース上に出てくる「Perl_croak」という箇所は、おそらく、Perl_croakという関数のように思われました。 と、すると、 includeファイルに、引数&戻り値などのインターフェース仕様だけ書かれているのではなく、 Perl_croak関数が行う、「処理の実態」も、ヘッダファイルに記述されているということでしょうか?? また、 dXSARGS という箇所については、戻り値を受け入れるような記述もなく、 dXSARGS; と一行書かれているだけなのですが、関数ではなく、戻り値を必要としないサブルーチンということでしょうか? /***********************************/ どなたか、資料/情報や、もしくは調べ方などをご存知の方がいらっしゃれば、 ご教授お願いできませんでしょうか? 些細な情報でも構いませんので、宜しくお願い致します。。 Visual C++ 2008で<stdio.h>のインクルード文が使えない!? #include <stdio.h> int main(){ printf("hello!"); } で実行すると、 : warning C4627: '#include <stdio.h>': プリコンパイル済みヘッダーの使用を検索中にスキップされました ディレクティブを 'stdafx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します .\■■■.cpp(5) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか? と言ったエラーが起きてしまいます。 ちなみに、インクルードファイルらしき物を削除しまくった覚えがあります…。100%これが原因かと。 これが原因だとしたらどうすればいいんでしょうか? あと、DXライブラリが使えるように設定を変えたこともあります。 どこの何を変えたかは忘れてしまいましたけど。 math.hに含まれる関数が使えない math.hヘッダーをインクルードして、sqrt()やcos()の関数を使おうとすると、関数sqrt()は定義されていませんとエラーが出て正常にコンパイルできません。 他のヘッダー(stdio.hやstring.hやstdlib.h)の関数は正常に使えてますので、パスの設定は問題ないと思うのですが…… 解決方法はあるのでしょうか?宜しくお願いします。 ヘッダファイルに関数本体を書き込めないのか? こんにちは。 現在WindowsVistaでCおよびC++を使ってプログラミングを行っています。 最近になって思ったのですが、普通、ヘッダファイルに記述する内容は、 ・関数のプロトタイプ ・クラスのメンバ関数を除いた部分(いわゆる「クラスの骨格」) ・マクロ といったものだと言われています。 そして、関数の実態やクラスのメンバ関数などは、 別のソースファイルに記述するように言われています。 なぜ、ヘッダファイルに関数の実態や、クラスのメンバ関数を記述するべきではないでしょうか? あるいは、プログラムの内容に応じて、関数やクラスの内容を、 ヘッダファイルにまるごと記述してもよい場合と悪い場合があるのでしょうか? こういった事について、何か御存じの方がいらっしゃれば、是非アドバイスをお願い致します。 (難しい問題なので、なるべく詳しい説明を頂けると、大変助かります。) ちなみに、関数やクラスのメンバ関数も一緒に、クラスの内容をまるごとヘッダファイルに記述しても、 今までの所、全く問題なく動作しています。 例えば、以下のようなプログラムは、何の問題もなく動作します。 ●main.c ____________________________________________________________ #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #include "func.h" void main(void) { char str[80]; puts("文字列を入力せよ"); gets(str); func(str); } ____________________________________________________________ ●func.h ____________________________________________________________ #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> void func(char *p) { puts("入力された内容は以下の通り。"); while(*p) putchar(*p++); } ____________________________________________________________ Cygwinをいれました アルサイトからいれました、でもヘッダファイルがなくてgcc でコンパイルすると #include <stdio.h> #include <math.h> などで引っかかってコンパイルがとおりません。ヘッダファイルだけ欲しいのですが、どっからとってこれませんか? windowsプログラムのヘッダーについて SDKを用いてWindowsプログラムを作っています。 #include <ctime> とインクルードした上でclock()関数を使用したのですが、コンパイラから未定義の関数を呼び出したことになってエラーが出てしまいます。他のヘッダーも含めC++の標準ライブラリはインクルードできないのでしょうか? ちなみに、<time.h>でインクルードすればコンパイルできます。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など