C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: VC++ 使用を推奨しない関数を知ることは出来ますか?


(過去ログ 33 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■16522 / inTopicNo.1)  VC++ 使用を推奨しない関数を知ることは出来ますか?
  
□投稿者/ Jitta on the way (74回)-(2008/04/07(Mon) 18:30:47)

分類:[C/C++] 

こんにちは。

VC++ の Win32 アプリケーションで、使用を推奨しない関数を使用した場合に警告を表示することはできますか?.NET の ObsoleteAttribute のようなものです。16ビット時代に作ったアプリケーションや、その時代しか知らないひとが作ったアプリケーションで、Vista に持っていくと動かないものがorz せっかくコンパイルしているのだから、リンクあたりで警告/エラーを出してくれたらなぁ...というところです。
引用返信 編集キー/
■16523 / inTopicNo.2)  Re[1]: VC++ 使用を推奨しない関数を知ることは出来ますか?
□投稿者/ シャノン (375回)-(2008/04/07(Mon) 18:34:24)
No16522 (Jitta on the way さん) に返信
> こんにちは。
>
> VC++ の Win32 アプリケーションで、使用を推奨しない関数を使用した場合に警告を表示することはできますか?.NET の ObsoleteAttribute のようなものです。16ビット時代に作ったアプリケーションや、その時代しか知らないひとが作ったアプリケーションで、Vista に持っていくと動かないものがorz せっかくコンパイルしているのだから、リンクあたりで警告/エラーを出してくれたらなぁ...というところです。

#pragma deprecated とか、__declspec( deprecated ) とか。
引用返信 編集キー/
■16560 / inTopicNo.3)  Re[2]: VC++ 使用を推奨しない関数を知ることは出来ますか?
□投稿者/ Jitta on the way (76回)-(2008/04/08(Tue) 06:48:40)
No16523 (シャノン さん) に返信
ごめん。子どもと一緒に寝てしもた。今晩みます。
引用返信 編集キー/
■16574 / inTopicNo.4)  Re[1]: VC++ 使用を推奨しない関数を知ることは出来ますか?
□投稿者/ NyaRuRu (38回)-(2008/04/08(Tue) 12:29:40)
2008/04/08(Tue) 12:30:44 編集(投稿者)

No16522 (Jitta on the way さん) に返信
> こんにちは。
>
> VC++ の Win32 アプリケーションで、使用を推奨しない関数を使用した場合に警告を表示することはできますか?.NET の ObsoleteAttribute のようなものです。16ビット時代に作ったアプリケーションや、その時代しか知らないひとが作ったアプリケーションで、Vista に持っていくと動かないものがorz せっかくコンパイルしているのだから、リンクあたりで警告/エラーを出してくれたらなぁ...というところです。

最近の Visual C++ の上位エディションでは PREfast 由来のコード検証が使えて,自作関数でも検証ルールを記述すれば利用できます.なので,コード検証が利用可能な環境であればそちらを利用するという手もあるかと.
検証ルールの自由度は比較的強力で,例えば戻り値を捨てたら警告扱いにするルールを作れたりします.
最近の Win32 API はヘッダファイルでひたすらアノテーションが書かれているので,定期ビルドでコード検証をオンにしておくだけでもそこそこ価値はあります.
引用返信 編集キー/
■16577 / inTopicNo.5)  Re[2]: VC++ 使用を推奨しない関数を知ることは出来ますか?
□投稿者/ アキラ (34回)-(2008/04/08(Tue) 12:34:51)
アキラ さんの Web サイト
No16574 (NyaRuRu さん) に返信
> 最近の Visual C++ の上位エディションでは PREfast 由来のコード検証が使えて,検証ルールはカスタマイズ可能なので,それらが利用可能な環境であればそちらを利用するという手もあるかと.
> 検証ルールの自由度は比較的強力で,例えば戻り値を捨てたら警告扱いにするルールを作れたりします.最近の Win32 API はヘッダファイルでひたすらアノテーションが書かれているので,コード検証をオンにしておくだけでもそこそこ価値はあります.

あんまり関係ないですけど、コード検証をオンにして BOOST_FOREACH を使うと Visual Studio が落ちました
(今は Professional を使っているので再現できないですが、Visual Studio 2008 Beta2の頃にそういう現象がありました)
引用返信 編集キー/
■16624 / inTopicNo.6)  Re[2]: VC++ 使用を推奨しない関数を知ることは出来ますか?
□投稿者/ Jitta (461回)-(2008/04/08(Tue) 22:49:41)
Jitta さんの Web サイト
No16523 (シャノン さん) に返信
>
> #pragma deprecated とか、__declspec( deprecated ) とか。

 確認しました。
ん。。。ということは、警告が出ないので、マークされていない、っちゅうことですね。


> コード検証が利用可能な環境であればそちらを利用するという手もあるかと.
あ、そういう手もありますね。自社で作っている静的コード検証プログラムを使っていますので、それにリストアップしてもらうのも手か。


 んと、この質問のねた元は、こちら。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=44215&forum=7&6
こちらでもリンクを張っていますが、MSDNの「IME と TSF のアクセシビリティ」という項目で、IMM32 は「古い入力マネージャ」と書かれています。
> http://www.microsoft.com/japan/msdn/accessibility/general/atg_tsf.aspx
> 新しい入力サービスは新しいインターフェイスでしか利用できませんが、アシスティブテクノロジ製品は、依然として古い入力マネージャ (IMM32) を使用して未確定文字列や候補文字列にアクセスする(IMMGetCompositionString)ことができます。

 「古い関数を使用していることがわかったなら、新しい関数に誘導してよ」という要望を上げようかと思って、ふと、「ものによっては古いよって、警告が上がってたよなぁ?」と、思った次第です。
 古いことを検出する機能がないのなら、「そういう機能を追加してよ」となりますが、機能があるなら「古い関数はきちんとマークしてよ」あるいは、「マークをつける、つけないの基準をはっきりさせてよ。はっきりさせられないならドキュメントに『古い』なんて書かないで!」という要望になるかな、と。

 microsoft.com 内を、「deprecated」で検索すると、[ http://msdn2.microsoft.com/ja-jp/library/bb546234.aspx ] こんなページも出てくるのですが、ここには、次のように書かれています。

> MFC (Microsoft Foundation Class) ライブラリには、Unicode 文字セットに基づいたクラスおよびメソッドに移行しています。
> このため、複数の MFC メソッドの ANSI バージョンの使用は推奨されていません。

ここにリストアップされているメソッドについては、おそらく警告が出るのでしょうが、現在私が関わっているプロジェクトでは、ANSI ライブラリを使用していますが、警告が出ません。ここから、マーク付けが不十分ではないか、と思います。WDK や SDK のバージョンが最新ではないように思うので、そのためなのかもしれませんが...

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -