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

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

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

Re[41]: VC++.NETについて [2]


(過去ログ 33 を表示中)

[トピック内 79 記事 (41 - 60 表示)]  << 0 | 1 | 2 | 3 >>

■16156 / inTopicNo.41)  Re[24]: VC++.NETについて
  
□投稿者/ アキラ (18回)-(2008/03/28(Fri) 22:14:28)
アキラ さんの Web サイト
No16154 (ネタ好き さん) に返信
> 先ほど書き忘れたのですが、C++規格への準拠率が高くなっていっているので、そこにVC++の効用がありますよね。
> その内100%になるかも。
VC++10.0ではC++0xが一部入るらしいですしね

> だけど、規格だけでWinアプリを作れないのが悩ましいw
きっと準標準のBoostがなんとかしてくれますw
嗚呼、夢のBoost.GUI
引用返信 編集キー/
■16159 / inTopicNo.42)  Re[25]: VC++.NETについて
□投稿者/ 鶏唐揚 (14回)-(2008/03/28(Fri) 23:53:43)
No16154 (ネタ好き さん) に返信
> 先ほど書き忘れたのですが、C++規格への準拠率が高くなっていっているので、そこにVC++の効用がありますよね。
.NETは1.1 -> 2.0 -> 3.5と来るたびにいろいろ変わってて、使い分ける意味や必要性が
出てくると思いますが、VC++でネイティブに組む場合は一見どれも大差ないように思ってました。
でも規格云々が変わってきてるってことは、どれを選べば良いっていうのがあるんでしょうか。
最適化の具合がよくなったとか、独自仕様すぎて汚かった構文が綺麗になったとか…?
引用返信 編集キー/
■16160 / inTopicNo.43)  Re[26]: VC++.NETについて
□投稿者/ ネタ好き (5回)-(2008/03/29(Sat) 00:02:26)
No16159 (鶏唐揚 さん) に返信
> ■No16154 (ネタ好き さん) に返信
>>先ほど書き忘れたのですが、C++規格への準拠率が高くなっていっているので、そこにVC++の効用がありますよね。
> .NETは1.1 -> 2.0 -> 3.5と来るたびにいろいろ変わってて、使い分ける意味や必要性が
> 出てくると思いますが、VC++でネイティブに組む場合は一見どれも大差ないように思ってました。
> でも規格云々が変わってきてるってことは、どれを選べば良いっていうのがあるんでしょうか。
> 最適化の具合がよくなったとか、独自仕様すぎて汚かった構文が綺麗になったとか…?


プラットフォームに依存しないアプリが作りやすくなる事がメリットだと思います。
具体的に言いますと、Unix系の人がVC++を使い易くなったり、
VC++使いがUnixアプリケーションを作れる(かも知れない)などの利点があると思います。
GUIについてはQtがあり、これを使えばさらにプラットフォーム非依存になるそうですが、
私自身は残念ながら使ったことが無いので詳細は分かりませんし、Javaの時のように、
ユーザがOSらしいGUIを望むかもしれませんので、
プラットフォーム非依存が長所とは言い切れない部分があります。

他にもヴァージョンが上がるメリットには、セキュリティの向上が挙げられます。
でも、既存C++ソースをヴァージョンアップをするのは面倒なので、人によっては短所に思えるかもしれませんね。
引用返信 編集キー/
■16161 / inTopicNo.44)  Re[26]: VC++.NETについて
□投稿者/ アキラ (19回)-(2008/03/29(Sat) 00:03:58)
アキラ さんの Web サイト
No16159 (鶏唐揚 さん) に返信
規格自体は変わってないですよ。
C++は複雑な言語仕様なので、標準順処のコンパイラを実装するのは大変らしいのです。

なので、古いVC++はC++言語仕様にはない動作ができてしまったり
標準順処のコードがコンパイル通らなかったりします(とくにVC++6.0)

例えばこういうコードがVC++6.0でコンパイル通ってしまいます
for (int i = 0; i < 10; i++) {
}
i = 0; // ここでiが使えてしまう!(VC++6.0のバグ)
引用返信 編集キー/
■16162 / inTopicNo.45)  Re[27]: VC++.NETについて
□投稿者/ Azulean (45回)-(2008/03/29(Sat) 00:57:10)
> C++は複雑な言語仕様なので、標準順処のコンパイラを実装するのは大変らしいのです
本当にそれだけが理由なんですか?
歴史的な問題の部分もあるのでは?(Microsoftの努力が足りなかった可能性は否定しませんが)

> なので、古いVC++はC++言語仕様にはない動作ができてしまったり
> 標準順処のコードがコンパイル通らなかったりします(とくにVC++6.0)
C++の標準の承認が1998年。( http://ja.wikipedia.org/wiki/C%2B%2B )
VC6.0の発売は1998年。 ( http://support.microsoft.com/lifecycle/?c1=501 )

> 例えばこういうコードがVC++6.0でコンパイル通ってしまいます
> for (int i = 0; i < 10; i++) {
> }
> i = 0; // ここでiが使えてしまう!(VC++6.0のバグ)
それはMS拡張仕様だったような。
VC2005からは、その部分だけは個別のオプションとなり、デフォルトでforの外にまで伸びることはなくなりましたが。

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vclang/html/_pluslang_The_C.2b2b_.for_Statement.asp
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vccore/html/_core_.2f.Za.2c_2f.Ze.asp
> By default, under /Ze, a variable declared in a for loop remains in scope until the for loop's enclosing scope ends.
> /Ze Microsoft の拡張機能が有効になります。

引用返信 編集キー/
■16163 / inTopicNo.46)  Re[28]: VC++.NETについて
□投稿者/ επιστημη (907回)-(2008/03/29(Sat) 01:04:30)
επιστημη さんの Web サイト
>>例えばこういうコードがVC++6.0でコンパイル通ってしまいます
>>for (int i = 0; i < 10; i++) {
>>}
>>i = 0; // ここでiが使えてしまう!(VC++6.0のバグ)
> それはMS拡張仕様だったような。

ぃゃぃゃ拡張仕様ってことじゃなく、標準C++以前はどんなコンパイラも
for内で宣言した変数はloopの外に漏れ出てました。
VC++6は標準C++準拠とはいいながら漏れっぱなしになってたです。

#define for if (0); else for

なんてなマクロでお茶を濁したもんです。

引用返信 編集キー/
■16164 / inTopicNo.47)  Re[27]: VC++.NETについて
□投稿者/ 中博俊 (1263回)-(2008/03/29(Sat) 01:33:10)
中博俊 さんの Web サイト
>プラットフォームに依存しないアプリが作りやすくなる事がメリットだと思います。
>具体的に言いますと、Unix系の人がVC++を使い易くなったり、
>VC++使いがUnixアプリケーションを作れる(かも知れない)などの利点があると思います

でもねぇ。
それこそレベルが・・・

実際のGUIなアプリとかつくろうと思ったら、それぞれの環境によるお作法が必須

引用返信 編集キー/
■16165 / inTopicNo.48)  Re[28]: VC++.NETについて
□投稿者/ アキラ (20回)-(2008/03/29(Sat) 01:42:16)
アキラ さんの Web サイト
2008/03/29(Sat) 01:57:36 編集(投稿者)
2008/03/29(Sat) 01:43:29 編集(投稿者)

No16162 (Azulean さん) に返信

では、VC++6.0以降のC++標準順処状況
(そんなに詳しくないですが知ってる限りです)

・VC++7.1(2003)...持ってないので未確認が多いですが
  ・for文のスコープ問題をオプションで対応(デフォルトはfor文スコープ外でfor文変数使用可)
  ・クラステンプレートの部分特殊化に対応?(未確認)
  ・メンバ関数テンプレートの宣言と定義を分けられるよう対応?(未確認)
  ・Template Template Parameter対応?(未確認)
  ・SFINAEは使えなかった

・VC++8.0(2005)
  ・for文のスコープのオプションのデフォルトを標準順処に変更(for文スコープ外でfor文変数使用不可)
  ・SFINAEに対応
  ・7.1まで正常に動作していたロケール周りで不具合発生(9.0で修正)
   http://cpplover.blogspot.com/2007/07/locale.html
   http://d.hatena.ne.jp/y-hamigaki/20070211#1171206100

・VC++9.0(2008)
  ・8.0まで正常に動作していたADL周りで不具合発生
   http://d.hatena.ne.jp/faith_and_brave/20071219/1198055224
  ・Feature Pack(SP1) でTR1ライブラリを実装

現在のVC++は一部不具合はありますが標準順処度はとても高くなっています。
引用返信 編集キー/
■16166 / inTopicNo.49)  Re[27]: VC++.NETについて
□投稿者/ アキラ (21回)-(2008/03/29(Sat) 02:14:22)
アキラ さんの Web サイト
No16160 (ネタ好き さん) に返信

>プラットフォームに依存しないアプリが作りやすくなる事がメリットだと思います。

私は、プラットフォームに依存しない標準順処のライブラリを使えることがメリットだと思います
引用返信 編集キー/
■16167 / inTopicNo.50)  Re[29]: VC++.NETについて
□投稿者/ Azulean (46回)-(2008/03/29(Sat) 07:17:30)
> ぃゃぃゃ拡張仕様ってことじゃなく、標準C++以前はどんなコンパイラも
> for内で宣言した変数はloopの外に漏れ出てました。
なるほど。
他のC++コンパイラもそうだったんですねぇ…。

> VC++6は標準C++準拠とはいいながら漏れっぱなしになってたです。
準拠を謳っていたとは。
テンプレート周りの実装で結構躓かされたんだけどなぁ…。
引用返信 編集キー/
■16169 / inTopicNo.51)  Re[23]: VC++.NETについて
□投稿者/ れい (450回)-(2008/03/29(Sat) 09:47:21)
No16153 (ネタ好き さん) に返信
> スレ違いになるかもしれませんが、デバドラはWDKですか?

いまから新規開発するなら当然WDKですね。
楽だし。

いま書いてるのはファイルシステムドライバで、
正確に言うとデバイスドライバではないので
WDKでもないですが。
引用返信 編集キー/
■16170 / inTopicNo.52)  Re[24]: VC++.NETについて
□投稿者/ ネタ好き (6回)-(2008/03/29(Sat) 12:48:17)
No16166 (アキラ さん) に返信
その通りですね。
GUI以外にもシステムサービスの問題もあるから、プラットフォーム非依存よりも、
標準順処のライブラリの方がよいですね。


No16169 (れい さん) に返信
返信有難うございます。
ファイルシステムドライバ!、凄く魅力的な物を作っていますね。

引用返信 編集キー/
■16172 / inTopicNo.53)  Re[25]: VC++.NETについて
□投稿者/ れい (451回)-(2008/03/29(Sat) 18:43:08)
> ■ No16169 (れい さん) に返信
> ファイルシステムドライバ!、凄く魅力的な物を作っていますね。

なんか食いつきがいいですね。

C#とかVBとかでファイルシステムが実装できるようにしようと思いまして。
FUSEみたいなのを作ろうと。

DBをドライブにマウントしてレコードがファイルとして見えたり、
アドレス帳がファイルとして見えてテキストエディタで編集できたりとか、
そーゆーファイルシステムを
.Netで自由に簡単に組めたら、夢が広がるかなと。

スレ違いはこの辺でやめて、最初の話題に戻りましょう。

No16012 (鶏唐揚 さん) に返信
> あえてVC++で.NETアプリを作るメリットがあれば聞いてみたいと思います。

これってC++/CLIってことですよね。
具体的に有用な事例を皆さんに聞いてみたいです。
私の場合は、

・COM周りで.Netでは不可能なことがあったのでその部分を実装するのに。
・コード・ライブラリを流用したいとき。
・速度が気になるとき。(経験上は高々数倍です)

その程度しか利用してません。
どれも、Windows.Formsとか使ってません。
CLIでなくてC++でもいいと言えばいいんですよね。
私の経験が少ない+視野が狭いだけだと思うんですが。

なので「こんなふうに使ってるぜ!」っていうのがあったら
語っていただけるとうれしいです。
引用返信 編集キー/
■16173 / inTopicNo.54)  Re[29]: VC++.NETについて
□投稿者/ Azulean (47回)-(2008/03/29(Sat) 21:12:52)
自宅では確認できる環境がなかったので職場で私的に確認。

> VC++6は標準C++準拠とはいいながら漏れっぱなしになってたです。
試しにVC6でMS拡張をOFFにしたら、スコープ外で無効になりましたよ。> for(int i = 0; ...
ただ、色々と効果があるのでWindows.hあたりでエラー出まくりでまともに使えませんが…。
引用返信 編集キー/
■16175 / inTopicNo.55)  Re[26]: VC++.NETについて
□投稿者/ ネタ好き (7回)-(2008/03/30(Sun) 04:27:29)
2008/03/30(Sun) 23:06:53 編集(投稿者)
2008/03/30(Sun) 04:37:49 編集(投稿者)

VC++全体の話しと勘違いしておりました。
C++/CLIでまず思いつくことは、ボックスとアンボックスをより細かく制御出来る事だと思います。
これでパフォーマンスがかなりよくなります。

追記:
後で思い出しましたが、C++/CLIではアンボックスは暗黙になってしまったんですよね。
うーん。C++/CLIだけではパフォーマンス改善できないかも。
引用返信 編集キー/
■16189 / inTopicNo.56)  Re[27]: VC++.NETについて
□投稿者/ 鶏唐揚 (15回)-(2008/03/31(Mon) 09:36:15)
お久しぶりです。

>VC++全体の話しと勘違いしておりました。
一応VC++.NETの話題ですが、元から.NETありきのVB/C#と違いNativeも混じるため、
VC++全体の話題は避けられない(と思う)ので、OKにしたいと思います。

>・7.1まで正常に動作していたロケール周りで不具合発生(9.0で修正)
>・8.0まで正常に動作していたADL周りで不具合発生
言語レベルのバグはいつの時代も存在していたMS…
VC++7.1にはバグないんですかね?
VC++6.0にあったバグが直ったとか、逆に出てきたバグとか
あれば教えてほしいと思います(今メインで使ってるのがVC++2003なので)
引用返信 編集キー/
■16190 / inTopicNo.57)  Re[30]: VC++.NETについて
□投稿者/ επιστημη (909回)-(2008/03/31(Mon) 09:45:36)
επιστημη さんの Web サイト
No16167 (Azulean さん) に返信
>>VC++6は標準C++準拠とはいいながら漏れっぱなしになってたです。
> 準拠を謳っていたとは。

おそらく"わざと"だろうと思われます。
昔のコードをコンパイルしたときの混乱を避けたんじゃないでしょか。
MFCに大きな変更がなかったので、できればそのままre-compileでおk
にしたかったんじゃないかな。

for ( int i = 0; i < LIMIT; ++i ) {
  if ( data[i] == TARGET ) break;
}
if ( i != LIMIT ) {
  みつかった!
}

こんなコード、ふつーにありましたからね。

引用返信 編集キー/
■16193 / inTopicNo.58)  Re[28]: VC++.NETについて
□投稿者/ 倉田 有大 (168回)-(2008/03/31(Mon) 12:25:47)
No16164 (中博俊 さん) に返信
> >プラットフォームに依存しないアプリが作りやすくなる事がメリットだと思います。
> >具体的に言いますと、Unix系の人がVC++を使い易くなったり、
> >VC++使いがUnixアプリケーションを作れる(かも知れない)などの利点があると思います
>
> でもねぇ。
> それこそレベルが・・・
>
> 実際のGUIなアプリとかつくろうと思ったら、それぞれの環境によるお作法が必須

そういえば、CodeWarriorなんてどうなんでしょう、つかったこと無いけど。
昔、知り合いのゲーム会社に働いている人が使っているとか何とか聞きましたけど。
引用返信 編集キー/
■16194 / inTopicNo.59)  Re[28]: VC++.NETについて
□投稿者/ アキラ (22回)-(2008/03/31(Mon) 12:27:03)
アキラ さんの Web サイト
No16189 (鶏唐揚 さん) に返信
> VC++7.1にはバグないんですかね?
> VC++6.0にあったバグが直ったとか、逆に出てきたバグとか
> あれば教えてほしいと思います(今メインで使ってるのがVC++2003なので)

7.1は持ってないのでくわしくはわからないのですが
SFINAEに対応してないこと以外は安定したバージョンだったと聞いてます。
(当時のBoostも99%使えたらしいので)

6.0での以下のバグは直ってると思います(未確認ですが)
・クラス内の整数型定数(6.0ではenumしか使えなかった)
 struct hoge {
  enum {value=1}; // OK
  static const int value = 1; // エラー!
  static const bool value = true; // エラー!
 };

・Cの標準ライブラリがstd名前空間に含まれていない
 #include <cstdio>

 printf("Hello"); // OK
 std::printf("Hello"); // エラー!

・関数の戻り値でvoid型を返せない
 void foo() {}
 void something()
 {
   return foo(); // エラー!void型は戻り値にできません
 }

・クラステンプレートの特別バージョンをサポートしていない
 template <class T>
 struct is_reference {
  enum {value = 0};
 };

 template <class T>
 struct is_reference<T&> { // エラー!struct is_referenceはすでに定義されています
  enum {value = 1};
 };

・クラス定義外でメンバ関数テンプレートを定義できない
引用返信 編集キー/
■16199 / inTopicNo.60)  Re[29]: VC++.NETについて
 
□投稿者/ ネタ好き (9回)-(2008/03/31(Mon) 16:00:26)
2008/03/31(Mon) 17:52:10 編集(投稿者)
2008/03/31(Mon) 16:18:08 編集(投稿者)
2008/03/31(Mon) 16:17:02 編集(投稿者)


>VC++全体の話題は避けられない(と思う)ので、OKにしたいと思います。

了解しました。
VC++の利点といえば、επιστημη さんがCodeZineで発表していた、
「SQLiteを組み込む」が凄い利点だと思います。
これはVBやC#ではスムーズに出来ません。
この組み込み術を応用すれば、Rubyなどの莫大なオープンソース資産を組み込めますし、
Cは多言語との連携(JScriptなど)が出来るのも大きな長所だと思います。
ライセンスさえクリアー出来ればほぼ無敵状態ですね。
単独の機能ではLispには勝てないと思うけど、連携力はすさまじい。

※でもLispをC++上に構築すれば、どっちの利点なのか曖昧なんですよね。
これはC++の利点というべきか、Lispの利点というべきか・・・
それが問題だ。

余談
この件で不思議に思うのですが、呼び出し規約さえ満たせば多言語の連携は不可能では無いと思うんだけど、
C&C++以外はあまり連携機能が実装されていない事です。
VM系言語は無理だとしても、アセンブラレベルでは、独自機能を完結すればどの言語も変わらないよね?
もしかして、勝手にリンカを弄くれって言う事かな?


引用返信 編集キー/

<前の20件 | 次の20件>
トピック内ページ移動 / << 0 | 1 | 2 | 3 >>

管理者用

- Child Tree -