特にautotoolsの場合_GNU_SOURCE
は、次を使用できますAC_USE_SYSTEM_EXTENSIONS
(autoconfのマニュアルから自由に引用してください)。
--マクロ:AC_USE_SYSTEM_EXTENSIONS
このマクロはAutoconf2.60で導入されました。可能であれば、通常は標準に準拠した名前空間の問題が原因で、通常は拡張機能を無効にするホストでCまたはPosixへの拡張機能を有効にします。これは、Cコンパイラを実行するマクロの前に呼び出す必要があります。必要に応じて、次のプリプロセッサマクロが定義されています。
_GNU_SOURCE
GNU/Linuxで拡張機能を有効にします。
__EXTENSIONS__
Solarisで一般的な拡張機能を有効にします。
_POSIX_PTHREAD_SEMANTICS
Solarisでスレッド拡張機能を有効にします。
_TANDEM_SOURCE
HPNonStopプラットフォームの拡張機能を有効にします。
_ALL_SOURCE
AIX3およびInterixの拡張機能を有効にします。
_POSIX_SOURCE
MinixのPosix機能を有効にします。
_POSIX_1_SOURCE
Minixの追加のPosix機能を有効にします。
_MINIX
Minixプラットフォームを特定します。この特定のプリプロセッサマクロは廃止されており、Autoconfの将来のリリースで削除される可能性があります。
について_FILE_OFFSET_BITS
は、を呼び出す必要がありAC_SYS_LARGEFILE
ますAC_FUNC_FSEEKO
:
- 大きい:AC_SYS_LARGEFILE
ラージファイルサポートと呼ばれる64ビットファイルオフセットを調整します。一部のホストでは、大きなファイルにアクセスできるプログラムを作成するために、特別なコンパイラオプションを使用する必要があります。そのようなオプションを出力変数に追加しますCC
。定義_FILE_OFFSET_BITS
し_LARGE_FILES
、必要に応じて。
オプションを使用して構成すると、ラージファイルサポートを無効にでき--disable-largefile
ます。
このマクロを使用する場合は、ラージファイルサポートが有効になっている場合に一般的であるため、幅が。off_t
よりも広い場合でもプログラムが機能することを確認してください。long int
たとえば、。を使用して任意のoff_t
値X
を出力することは正しくありませんprintf("%ld", (long int) X)
。
LFSは、Cの対応物を置き換えるために、およびを使用しない関数を導入fseeko
しました。プロトタイプを使用し、ラージファイルサポートが有効になっている場合は、プロトタイプを使用できるように注意してください。ftello
fseek
ftell
off_t
AC_FUNC_FSEEKO
autoheader
を生成するために使用している場合は、使用するconfig.h
ことに関心のある他のマクロを定義できます。AC_DEFINE
AC_DEFINE_UNQUOTED
AC_DEFINE([FUSE_VERSION], [28], [FUSE Version.])
自動ヘッダーを使用している場合、定義はコマンドラインに渡されるか、に配置されconfig.h
ます。の本当の利点はAC_DEFINE
、構成チェックの結果としてプリプロセッサ定義を簡単に許可し、システム固有の問題を重要な詳細から分離できることです。
.c
ファイルを書き込むときは、#include "config.h"
最初にインターフェイスヘッダー(たとえば、foo.h
-foo.c
これにより、ヘッダーに依存関係が欠落していないことが保証されます)、次に他のすべてのヘッダーが続きます。