問題タブ [sal]

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.

0 投票する
2 に答える
2883 参照

c++ - 奇妙なSALアノテーション警告

プロジェクトにMicosoftのSALアノテーションを使用しようとしていますが、次の警告が表示され、理由がわかりません。

例として、新しいC ++コンソールアプリケーションを作成し、次のコードを使用します。

Visual Studio 2008を使用してコンパイルすると、次の警告が表示されます。

警告C6540:この関数で属性アノテーションを使用すると、既存の__declspecアノテーションがすべて無効になります

ファイル「c1xxast」内

私は何が間違っているのですか?_Check_return_またはを削除する__inと、警告が消えます。

警告C6550への参照が見つかりません。ただし、同じテキストがここにあります:http: //msdn.microsoft.com/en-us/library/dd445322.aspxですが、あまり役に立ちません。

0 投票する
3 に答える
1479 参照

c++ - Microsoft の Source Annotation Language (SAL) -- それを利用する方法はありますか?

この情報を保存する C パーサーなど、Microsoft の SAL を利用する方法はありますか? それとも、Microsoft の内部使用のみを目的として Microsoft によって作成されたものですか?

他の言語用の C ライブラリ バインディングの作成など、多くのタスクに非常に役立ちます。

0 投票する
1 に答える
3548 参照

c++ - SAL (Source Annotation Language) の目的と、SAL 1 と 2 の違いは何ですか?

タイトルで尋ねられたように:

SAL (Source Annotation Language) の目的と、SAL 1 と SAL 2 の違いは何ですか?

使用法の基本を理解しています。これは、関数に渡される各変数の目的と、静的コード分析のための他のさまざまなことを強調するのに役立ちますが、実際にどれだけの違いが生じるか (パラメーター要件の明確化を無視して)プロジェクトの他のプログラマー)?

If I was to have the following prototype:

This is supposed to "tell" the static analyser that the function will return 1 upon it's successful operation, that pTest is a pointer which must not be nullptr and that pOptional is a pointer which may or may not be nullptr. However, can't the static analyser get this information from the function definition itself? Moreover, what does it do with the information it gets such as the success criteria?

Furthermore, why is there a difference between SAL 1 and SAL 2, why did microsoft decide to change the way they named their macros (i.e. from __out to _Out_ and __success to _Success_?)

I'm sorry if this is described somewhere in detail on the MSDN but I was unable to find it or any other question on StackOverflow with a detailed answer so I thought I'd ask in the hopes of having my curiosity satisfied.

Thanks in advance for your time!

0 投票する
1 に答える
341 参照

c++ - Microsoft SAL で off-by-one エラーを防ぐ方法

これは、MSDN ( http://msdn.microsoft.com/en-us/library/hh916383.aspx ) で提供されている例で、SAL 注釈が一般的な off-by-one エラーの検出に役立つことを説明しようとしています。

この例がよくわかりません。この例では、関数シグネチャに というパラメーターが含まれているように見えるcountため、 を使用In_reads_(count)して、指しているメモリ空間srcに少なくともそのようなバイト数があることを確認できます。
私の質問は、このような署名付きの関数がある場合はどうなるかです

この場合、署名にはサイズに関する情報は含まれていません。SAL を使用してデバッガーにdestと同じサイズまたは 1 バイト大きくするように指示できますsrcか?

0 投票する
1 に答える
1798 参照

c++ - _Deref_ および _Outptr_ sal 注釈

DerefOutptr SAL アノテーションの違いは何ですか? また、_Outptr_result_buffer_all_ や _Outptr_result_buffer_ などのさまざまな種類のOutptr注釈をいつ使用しますか?

0 投票する
2 に答える
378 参照

c++ - 呼び出し元 SAL エラーへのポインターの出力

コードにSALを追加しようとしています... msdn に従って作業したところ、msdn の例にバグが見つかりました。対処方法がわかりません。

ここでは、 SAL についての例「呼び出し元へのポインターの出力 (例: Outptr 注釈)」を少し変更しました。

Outptr は、ポインターを返すことを目的としたパラメーターに注釈を付けるために使用されます。パラメータ自体は NULL であってはなりません。呼び出された関数はその中に NULL 以外のポインタを返し、そのポインタは初期化されたデータを指します。

私のコード:

コードalalysysを有効にしてVS2013でコンパイルすると、C6001が発生しました:初期化されていないメモリを使用しています

為に

行。

ここで私の注釈で何が磨耗していますか?どうすれば修正できますか?

0 投票する
2 に答える
379 参照

c++ - _In_ を const に展開

おそらくすべての Windows C++ 開発者を混乱させるという事実を除けば、

const の正確性を確保するために (まだ存在しない場合)_In_必須に拡張するのが賢明ではないでしょうか?const

そう

になる

明らかに _[In]Out_ は Nothing に展開する必要があります


編集:明らかに最初の問題は、これはポインターまたは参照パラメーターの前で展開する場合にのみ意味があるということです。

したがって、simpke マクロ展開では十分ではないかもしれません。強制するという概念をまだ放棄したくありconstません。モットーは次のとおりです。SALどのパラメーターが何であるかを示す表記法が既にありroます。それを使用してみましょう。