[解決済み] 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番を使用します。
関連
-
[解決済み] c - 初期化がキャストなしでポインタから整数を作る、さらに2つのコンパイラーエラー
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Cコンパイルエラー。"変数サイズのオブジェクトが初期化されていない可能性がある"
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】strcmpが機能しない
-
[解決済み】初期化がキャストなしで整数からポインタを作成 - C言語
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】Cygwin - Makefile-error: ターゲット `main.o' のレシピに失敗しました。
-
[解決済み】警告:組み込み関数'printf'の非互換な暗黙の宣言(デフォルトで有効]
-
[解決済み】C言語で多重定義を防ぐには?
-
[解決済み】C言語で入力が整数型かどうかチェックする
-
[解決済み】警告:引数「互換性のないポインタ型から」を渡す[デフォルトで有効]。