私は1つのパス/usr/include/linux/stddef.h
であり、そしてこのようになります、のは、私のシステムでstddef.h
を言わせて、いくつかのコピーを持っている:異なるヘッダーの名前が同じであるのはなぜですか?
#ifndef _LINUX_STDDEF_H
#define _LINUX_STDDEF_H
#undef NULL
#if defined(__cplusplus)
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
もう一つは、パス/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/include/
であり、かつそれがあるものです私が#include <stddef.h>
と言うときに使用されます。その1の内容は、最初の1から多くの異なる、ptrdiff_t
の定義が含まれ、size_t
など
は、私の質問は:私の知る限りでは、C/C++の規格がsize_t
の定義はに置かれるべきことを要求しますstddef.h
しかし、最初のものはそれに従わない。それは明らかにC/C++標準で言及されたものではありません。そのファイルが他の目的で使用されている場合、なぜこれらのファイルの両方がstddef.h
という名前になっていても、名前が違うともっと安全ではないでしょうか?
これはむしろ怪しげに見えます。修飾されたガードワードは、意図的にstddef.hとして偽装していないことを暗示しているようです。どのパッケージから来たのか確認できますか? – Cheezmeister
@Cheezmeister: 'apt-file'は、 ' linux-libc-dev:/ usr/include/linux/stddefです。hu と 'gcc-4.5:/ usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/include/stddef.h' – loudandclear
@Cheezmeisterです。私はあなたを二番目に。 '/ usr/include/linux/stddef.h'というパス名は**標準ヘッダ**を意味しません。私のLinux(Slackware64 13)のコピーには '/ usr/include'の下に' stddef.h 'はありません。 – shinkou