それより VisualStudio 2005 の重さに閉口する
>>942 あなたのPCにメモリが足りてないか、あなたにカルシウムが足りていない。
Eclipseの方が重くね?
notepad.exeより軽くなったら使ってやってもいい。
つまりnotepadをくそ重くすればいいんだな。
腕の良い呪術師を探せばあっという間だな。
C++/CLIはC++より速いの?
書き手による
どういう書き手ならC++/CLIがC++より速いの?
どういう書き手ならC++がC++/CLIより速いの?
無能であるかそうでないか
100% C++の文法で書いたソースを /clrでコンパイルしたものを
C++/CLIと呼ぶかどうかという問題はある。
いまいちわかんないんだけどさ、C++/CLIって中間コードへコンパイルするんじゃないよね?
インテルやAMDのネイティブなアセンブラになるんだよね?
オプションによる
>954
どういうオプションでなる? 詳しい説明がある所のポインタを教えてもらえるとありがたい。
>>955 /clr あとはMSDNかGoogleで
C++/CLI そのものはただの言語なのでどうコンパイルするかはコンパイラ次第なのだが
と使い古された半畳
C++/CLI のコンパイラっていくつあるの?
Visual C++ 2005とたぶんVisual Studio Orcas CTP
doubleがNaNかどうかを判定する方法を教えてください
Double::IsNaN メソッド
962 :
デフォルトの名無しさん:2007/03/29(木) 22:15:49
すいません、これコンパイル通らないんですが仕様ですか?
public ref class Test1
{
array<String^>^ strs;
public:
Test1(array<String^>^ strs) : strs(strs){;}
};
public ref class Test2 : public Test1
{
public:
Test2(void) : Test1(gcnew array<String^>{"test1", "test2"}){;} //←ここで引っかかる模様
};
>>962 確かに通らないね。文法上の制約なのか、コンパイラの制約なのかはわかんね。
964 :
962:2007/04/04(水) 17:18:38
ありがとう。
で、今日はこれコンパイル通らんかった。
初期化子の数が多すぎるそうです。
何でも一度に書くなということでしょうかね。
public ref class Test1
{
public:
Test1(void){;}
Test1(array<Test1^>^ tests){;}
};
///////////////////////////////////
array<Test1^>^ test1 = gcnew array<Test1^>{
gcnew Test1(),
gcnew Test1(),
gcnew Test1(gcnew array<Test1^>{
gcnew Test1(),
gcnew Test1()
})
};
#include <stdio.h>
void change(int *a,int *b);
int main(void){
int a=5,b=3;
change(&a,&b);
printf("%d,%d",a,b);
return 0;
}
void change(int *a,int *b){
int c;
c=a;
a=b;
b=c;
}
aとbを入れ替えるchangeを作りたかったんですがこれだとうまくいきません
どこを直せばいいですかね?
#include <stdio.h>
#include <algorithm>
void change(int *a,int *b);
int main(void) {
int a=5, b=3;
change(&a, &b);
printf("%d, %d", a, b);
return 0;
}
void change(int *a,int *b) {
std::swap(*a, *b);
}
まあ細かいことは気にしない。
まあ、なんだ。ポインタを入れ替えてどうする、と。
ていうかcに代入する時点でエラーか警告出てない?
ん〜・・・
よくわからねーんですが
int *a
この *aはINT型でなくINTのポインタ型
aがINT型
&aがアドレス型?
なんですかね・・・
c=aとしちゃうと、INT型とINTのポインタ型は違う型だから代入できないってことなんでしょうか^^;
void change(int *a, int *b) {
int c;
c = *a;
*a = *b;
*b = c;
}
次からはただのCのスレ行けよ。
実践C++/CLI(中 博俊)を読んでC++/CLIを読んでるけども、
文法はある程度分かっても、クラスライブラリがどうなってるかが全く分からない。
例えば、文字列を表示するにはどれを使えばいいかとか....
MSDNライブラリは大量の項目で羅列してるけど、「〜をしたい場合には〜を使う」みたいな使い方はサポートしていない希ガス。
どうやって勉強すれば良いんだろうか.......
ライブラリはとにかく使ってみて、どれがどういう場合に最適か覚えるしかないだろ
経験がないことには話にならん
その際にはC#やVB.NETのコードを読めると吉。
質問です。
ttp://www.atmarkit.co.jp/fdotnet/special/vcppinvista01/vcppinvista01_02.html の通りに、関数をラッパするクラスを作って、ネイティブ関数をmanagedな言語
から呼び出すとき、
*.lib (ネイティブ関数ライブラリ)
から
*.dll (managedライブラリ)
を生成する際に
hello.lib(hello.obj) : warning LNK4075: /EDITANDCONTINUE は /INCREMENTAL:NO の指定によって無視されます。
という警告が出ます。
一応、警告を気にせずに実行すれば動作はするのですが、
イマイチ気分的にすっきりしません。
なぜ警告が出るのかわかる方いますか?
ちなみに環境はWinXP + Visual Studio 2005です。
977 :
976:2007/04/09(月) 15:41:22
追記:
関数のラップクラス(hellolib)では、リンカのインクリメンタルオプションは
/INCREMENTAL
で有効になっています。
また、ネイティブ関数のライブラリ(hello)では、そもそもプロジェクトの
プロパティページにリンカの設定をする項目がありませんでした。
警告で出ている/EDITANDCONTINUEは、プロジェクトのプロパティ
からどこか探したのですが、どこにあるか発見できませんでした。
978 :
デフォルトの名無しさん:2007/04/12(木) 13:04:00
C++CLIの存在意義はなんなんだろう?
釣りじゃなくってホントそうおもう
C#じゃだめなの?
979 :
デフォルトの名無しさん:2007/04/12(木) 14:20:49
>>978 Java厨を引き込むためのJ#
ブヴィ厨を引き込むのためのVB.NET
ぷらぷら厨を引き込むのためのMC++, C++/CLI
>>978 ネイティブとマネージドの世界の橋渡しにはいいと思う。
C#でのinteropと違って、C/C++に用意されたヘッダファイルがそのまま使える。
982 :
デフォルトの名無しさん:2007/04/17(火) 05:34:22
そろそろ結論を言おうか?
ネイティブ吐けるC#こそ最強!
あったらの話だけどね。
C++/CLIはちと難しすぎるというかややこしいんだよね。
というのもC++から入ってから.NETに行くことになるから。
やっぱ.NETから入ってネイティブという流れで学べる環境じゃないと広がらないと思うんだ。
だからこそネイティブ対応のC#を切望しているわけ。
いまのところC++やっている人はC++/CLIやってくれたらいい。
VB/JAVAやっている人はぜひC#はじめてみてほしい。
初心者はもちC#!
ネイティブC#かぁ〜、ホント楽しみだね。
朝から妄想オナニー?それとも込みか?縦ではなさそうだし最近のは難しいな。
984 :
デフォルトの名無しさん:2007/04/17(火) 08:54:03
いいかい、同じ.NET対応言語でもC#やVBは初心者にも門戸を開いている。
というよりかはC++が上級プログラマのための言語であるからして、
必然的に、それ以外のプログラマのための言語がC#でありVBだといえなくもない。
とにかくだ。
問題はC++/CLIがC#やVBどころか、C++よりも敷居の高い言語だということなんだ。
このギャップはいったいなんなんだとういう話さ。
わかったかい?
985 :
デフォルトの名無しさん:2007/04/17(火) 08:55:14
C++よりも敷居が高いなんて.NET対応言語としてあるまじきことではないか!?
既存のC/C++ヘッダーとlibファイルを引っ張ってきてマネージモジュールを
書けるC#があったら、それがC++/CLIってだけの話かと。
>>982>>984 言いたいことはわからなくもないが、
残念ながらそれを書くべき場所としてここは相応しくない。
せめて.NET FrameworkのスレとかC#のスレとかでだったら共感できるのに。
お願いします。
動的に追加したContextMenuStripのメニューアイテムのすべてを
同じイベントハンドらに設定した場合、そのイベントハンドら内で
どのメニューアイテムが選択されたのかを知る一般的な方法って
あるのでしょうか?
いろいろやって見ましたが、なんかうまくいきません。
最初に渡ってくるオブジェクトを調べれば?
990 :
988:2007/04/21(土) 21:43:03
>989
最初にわたってくるオブジェクトとはイベントハンドらの第一引数の
ことでしょうか?
それはthis(メインのフォーム)になっているので、これを
変えればいいのでしょうか?
しかしEventHandlerを作ったときの第一引数にToolStripItem^を
渡すとコンパイルエラーerror C3754になってしまいます。
991 :
988:
すいません。ぼけてました。
いま調べてみたら第一引数は、ToolStripMenuItem^になってました。