アプリ版:「スタンプのみでお礼する」機能のリリースについて

#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>を使っていますが、
どこの部分で必要になるのでしょうか?
プログラム貼り付けて非常に見づらくてすいません

A 回答 (5件)

statに必要です。


仮に、<sys/types.h>をインクルードせずにコンパイルでき、動作に問題がないとしても移植性に問題が出ます。
仕様で<sys/types.h>のインクルードが要求されているのであれば、「たまたま」コンパイル・実行できることに期待せず、要求に従いましょう。

この回答への補足

statに必要というのは、stat構造体を使うときに、必要ということでしょうか?

補足日時:2008/09/04 14:15
    • good
    • 0

sys/stat.h内で



#if !defined(__TYPES_H)
#include <sys/types.h>
#endif

みたいにincludeしている場合もありますが自前でincludeして置いた方がいいでしょう(もちろん#include <sys/stat.h>の前に)
    • good
    • 0

よく知らないので的を外している可能性大ですが、 types なので


定数置換(つまり大文字の定数値)をやってるんじゃないでしょうか。
まあ、ANo.1さんの仰るとおりにここで聴く前にコメントアウトして
自分で実験してみる方が早いと思いますけど。
(百聞は一見にしかずです)
    • good
    • 0

>上記のプログラムでは<sys/types.h>を使っていますが、


>どこの部分で必要になるのでしょうか?

そもそも何故あなたはそのヘッダをインクルードしたんですか?
    • good
    • 0

外してコンパイルしたときにエラーが出たら、


その箇所で必要です。
    • good
    • 0

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