[解決済み] define _GNU_SOURCE "は何を意味しているのですか?
質問
今日、私は
basename()
という関数があり
man 3 basename
(
ここで
という変なメッセージが表示されました。
備考
には2種類のバージョンがあります。 basename() - その ポシックス のバージョンと、上記の GNU版 の後に取得します。
#define _GNU_SOURCE
#include <string.h>
これってどうなんだろう
#define _GNU_SOURCE
は、次のような意味です。
汚し
は、私が書くコードにGNU関連のライセンスをつけるのでしょうか? それとも単にコンパイラに"のようなことを伝えるために使われるのでしょうか?
まあ、この関数群はPOSIXではないので移植性はないのですが、とにかく使ってみたいのです。
となります。
もしそうなら、ある関数の実装を得るために不明瞭なマクロを定義する代わりに、人々に異なるヘッダを与えてはどうでしょうか?
コンパイラはどのように実行ファイルにリンクする関数の実装を知るのでしょうか?コンパイラはどのように実行ファイルにリンクする関数の実装を知るのでしょうか?
#define
ということでしょうか?
どなたか、ご指摘のある方はいらっしゃいませんか?
どのように解決するのですか?
定義
_GNU_SOURCE
は、ライセンスとは関係なく、すべては(非)ポータブルなコードを書くことに関係します。もしあなたが
_GNU_SOURCE
となります。
- 多くの非標準 GNU/Linux 拡張関数へのアクセス
- POSIX 標準から削除された伝統的な関数へのアクセス (多くの場合、より良い代替品に置き換えられたり、特定のレガシー実装に結びついたりといった正当な理由がある)
-
のようなシステムユーティリティを実装するために必要な、移植不可能な低レベル関数にアクセスすることができます。
mount
,ifconfig
など。 - たくさんのPOSIXで指定された関数の壊れた振る舞い。GNUの人々はその関数がどのように振る舞うべきかについて標準委員会と意見が合わず、彼ら自身のことをすることに決めたのです。
これらのことを意識していれば、「Space」を定義することは問題ないでしょう。
_GNU_SOURCE
を定義することは避けるべきですが、その代わりに
_POSIX_C_SOURCE=200809L
または
_XOPEN_SOURCE=700
を使用することで、プログラムの移植性を確保することができます。
特に
_GNU_SOURCE
ということを
決して
を使うのは、上記の2番と4番です。
関連
-
解決済み] g++ コンパイルエラー: ')'トークンの前に一次式があることが予想される
-
initializer element is not constant "というエラーが表示されるのですが?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] POSIX」の意味を教えてください。
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】"static const" vs "#define" vs "enum"
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
コンパイルエラー:可変長オブジェクトが初期化されていない可能性があります。
-
警告:符号付き整数式と符号なし整数式の比較 [-Wsign-compare]
-
[解決済み] PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init ( &mutex, param )
-
[解決済み] stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み] なぜmemsetではなくbzeroを使用するのですか?
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] C言語でのブーリアン値の使用
-
[解決済み] 演算子 *, /, +, -, % を使わずに 3 で割る。
-
[解決済み] 2次元配列の反復処理において、ループの順序がパフォーマンスに影響するのはなぜですか?