問題タブ [tr24731]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C4996、fopen 非推奨: なぜ? (注: 抑制方法)
fopen
より安全であると安全でないものは何fopen_s
ですか?
fopen を安全に使用するにはどうすればよいですか (可能な場合)。
(警告を抑制する方法を知りたくありません-その質問に答える十分なスタックオーバーフローの記事があります)
編集:質問は「意見に基づく」として閉じられました(回答は1つしかなく、その意見はあまり見られませんが)。少し言い換えてみます。非推奨になった理由を説明する Microsoft (関数を非推奨にした) によるドキュメントを見つける方法/場所を誰かが示すことができれば幸いです。
c - __STDC_LIB_EXT1__ gcc および clang での可用性
Google で簡単に検索しても何も見つからなかったので、ここで質問してみます (gcc/clang に関係する多くの人がここにたむろしているので) - __STDC_LIB_EXT1__
gcc/clang のステータスは? 私たちはクロスプラットフォームアプリケーションを開発しており、(Visual Studio 2017 で奇跡的に利用できる) 安全な境界チェック機能のいくつかを使用したかった<stdio.h>
のですが、Xcode 9.2 でコードをコンパイルできませんでした。Xcodeが使用するclangのバージョンは古いかもしれないと思いましたが、Ubuntuのgcc 6.3.0は同じように動作します。次のサンプルでtmpnam_sを使用しようとしています。
しかし、マクロが定義されていないため、コンパイルは失敗します。
何か間違ったことをしているのですか、それともこの関数セットのサポートが不十分なのでしょうか?
c - gcc (または glibc) が _s 関数を実装しなかったのはなぜですか?
などの _s 関数は、オプションの標準scanf_s
のようです。printf_s
MSVC はこれらの関数を実装していますが、gcc は実装していません。
セキュア機能を実装しない特定の理由はありますか? glibcはscanf
十分に安全ですか?
c - scanf_s() バッファはどこで定義されていますか?
インターネットにアクセスできなくても、scanf_s()
関数を使用してキーボードからの入力を取得したい ( stdin
) 場合、バッファーを宣言する場所をどのように知ることができますか?
scanf_s()
現在、 Visual Studio で関数にステップ インすると、次のように表示されます。
scanf_s()
したがって、が 1 つの定義済み引数 ( ) を取ることがわかりますchar const * _Format
。この場合、これは be などのプレースホルダーである可能性がありますが"%s"
、2 番目の引数 (スキャンの結果を格納するバッファーのメモリ アドレス) には何もありません。