- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sys/types.hの必要性について)
sys/types.hの必要性について
このQ&Aのポイント
- #include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<sys/stat.h> #include<unistd.h> int main (int argc,char *argv[]) { struct stat buf[2],*p; if(argc!=3) { fprintf(stderr,"Usage:newer file1 file2\n"); exit(EXIT_FAILURE); } p=buf; if(stat(argv[1],p)<0) { perror("stat"); exit(EXIT_FAILURE); } p++; if(stat(argv[2],p)<0) { perror("stat"); exit(EXIT_FAILURE); } if(buf[0].st_mtime>buf[1].st_mtime) { printf("%s\n",argv[1]); } else { printf("%s\n",argv[2]); } return EXIT_SUCCESS; }
- 上記のプログラムでは、<sys/types.h>というヘッダーファイルを使用しています。このヘッダーファイルは、システムコールやディスクリプタ、ファイルの属性などの基本的なデータ型や定数を宣言しています。
- <sys/types.h>は、プログラムでファイルの属性やパーミッション、ファイルディスクリプタなどの情報を取得するために必要です。具体的には、struct stat型の変数やファイルディスクリプタを宣言する際に使用されます。また、プロセスIDなどのシステムリソースを扱うためのデータ型も定義されています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
statに必要です。 仮に、<sys/types.h>をインクルードせずにコンパイルでき、動作に問題がないとしても移植性に問題が出ます。 仕様で<sys/types.h>のインクルードが要求されているのであれば、「たまたま」コンパイル・実行できることに期待せず、要求に従いましょう。
その他の回答 (4)
- php504
- ベストアンサー率42% (926/2160)
回答No.5
sys/stat.h内で #if !defined(__TYPES_H) #include <sys/types.h> #endif みたいにincludeしている場合もありますが自前でincludeして置いた方がいいでしょう(もちろん#include <sys/stat.h>の前に)
- pick52
- ベストアンサー率35% (166/466)
回答No.3
よく知らないので的を外している可能性大ですが、 types なので 定数置換(つまり大文字の定数値)をやってるんじゃないでしょうか。 まあ、ANo.1さんの仰るとおりにここで聴く前にコメントアウトして 自分で実験してみる方が早いと思いますけど。 (百聞は一見にしかずです)
- koko_u_
- ベストアンサー率18% (459/2509)
回答No.2
>上記のプログラムでは<sys/types.h>を使っていますが、 >どこの部分で必要になるのでしょうか? そもそも何故あなたはそのヘッダをインクルードしたんですか?
- asuncion
- ベストアンサー率33% (2127/6289)
回答No.1
外してコンパイルしたときにエラーが出たら、 その箇所で必要です。
補足
statに必要というのは、stat構造体を使うときに、必要ということでしょうか?