[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 04/25 21:15 / Filesize : 282 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

スレを勃てるまでもないC/C++の質問はここで 2



1 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 11:02:46 ]
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

スレを勃てるまでもないC/C++の質問はここで
pc11.2ch.net/test/read.cgi/tech/1167476845/


752 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:46:42 ]
>>747
2万じゃ安いな・・8万でどうだ?

753 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:47:59 ]
ちゃんと引継ぎしとけよ・・・

754 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:48:45 ]
>(以前プログラマに依頼して作ってもらったものですが今は連絡が取れません)
待遇悪くて逃げられたんか?

755 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:08:57 ]
>>747
解析料が必要です。弊社なら50万円で納期2週間で考えてみましょう。
プログラムのソースによって見積もりのさじ加減はかなり違います。

756 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:13:25 ]
2万とか・・・どんだけ買い叩いてんだよ

757 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:14:45 ]
ローカルにプロクシ立てるとかすれば何もいじらずに済むんじゃね?

758 名前:デフォルトの名無しさん [2007/08/07(火) 01:09:59 ]
多重ループを一気に抜ける方法って、いちいちbreak文つけるか、gotoしかないんですか?

例えば、swtich文の中のif文で、break文以外の処理も行いたい時、
同じif文を二回書くことになるので、なんか無駄に長くなってしまうのですがorz

759 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 01:11:53 ]
gotoつかやいいじゃん。

760 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:12:19 ]
もうひとつある
そのループを別の関数に分離してreturn



761 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:22:37 ]
賛否あるが、throwってのもある。

762 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:46:58 ]
つか、何の言語?

763 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 07:36:16 ]
スレを勃てるまでもないC/C++の質問はここで 2

764 名前:762 mailto:sage [2007/08/07(火) 09:25:29 ]
うぁ、すれ立てるまでもない質問はここでスレだと思ってた!

765 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 10:06:26 ]
(*´д`)σ))Д`)

766 名前:デフォルトの名無しさん [2007/08/07(火) 15:07:36 ]
棒倒し法で迷路を自動生成するプログラムを作ろうとしているんですが、すべての棒が同じ方向に倒れます。
下が棒を倒す部分の関数なんですが、どこが間違ってるのか教えてください。

void KnockDown(){
 int i,j;
 for(j=2;j<19;j+=2){
  for(i=2;i<19;i+=2){
   srand( (unsigned int)time(NULL) );
   switch (rand()%4){
   case 0:// 北
    if(maze[i][j-1]!=0) maze[i][j-1]=0;
    break;
   case 1:// 東
    if(maze[i+1][j]!=0) maze[i+1][j]=0;
    break;
   case 2:// 南
    if(maze[i][j+1]!=0) maze[i][j+1]=0;
    break;
   case 3:// 西
    if(maze[i-1][j]!=0) maze[i-1][j]=0;
    break;
   }
 }}
}

767 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 15:11:43 ]
>>766
srand()は最初に呼ぶだけにしよう。

768 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 15:11:45 ]
質問なのですが
動画にマイクで声をつけるのはどうやってやるんですか?
後、動画の編集の仕方も教えてください
よろしくおねがいします

769 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 15:14:09 ]
板 違 い

770 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 15:21:32 ]
>>766
0が壁で0以外が通路?何か違和感あるなw
あと、ランダムで決定したところにすでに壁ができていた場合どうなると思う?



771 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 17:07:05 ]
質問です。
ウインドウズでメモリーリークを知るには_CrtDumpMemoryLeaks()を使いますが、
メモリースマッシュを知るにはどうすればいいのでしょうか?

##二重開放とかそういうことです。

772 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:54:14 ]
>>766
一つ言わせてくれ。

質問する前に2つのことをすべし。
1. デバッガでステップ実行する。変数の値の中身も見ること。
2. 問題を切り分ける。

あなたの問題は、
すべての棒が同じ方向に倒れる
のではなく、
rand()%4が同じ値になる
でしょうに。


773 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 19:05:37 ]
>>771
二重解放なら、
デバッグビルドをデバッガ上で走らせていれば、
デバッガのトレース出力にメッセージが出たと思う。

とりあえず、
_CrtSetDbgFlagで_CRTDBG_DELAY-_FREE_MEM_DFと_CRTDBG_CHECK-_ALWAYS_DFをオンにして、
わざと二重解放してみよう。

オーバーヘッドが多き過ぎるなら、
_CRTDBG_CHECK-_ALWAYS_DFはオフにして、
自分で_CrtCheckMemoryを呼ぶ。

_CrtSetAllocHookを使って、自分でチェックするのも手。

774 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 21:54:33 ]
>>773
レスサンクス!!

デバッガが警告出してくれるっぽいですねぇ。
コレで安心してメモリ確保ができるってもんです。
当方、趣味グラマの初心者なのでメモリ確保が苦手なのです。
レスほんと、サンクス!



余談ですが、こういうの作ってました。
f20.aaa.livedoor.jp/~tori/html/upboard/updir/SafeArray.lzh
内容は参照カウンタ(本命)と配列クラス(デモ)です。
デバッグは済んでいないので使用は自己責任で。

それじゃー。:D

775 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:02:39 ]
む!直リンできないか。

f20.aaa.livedoor.jp/~tori/html/upboard/upboard.cgi
または、
f20.aaa.livedoor.jp/~tori/html/upboard/updir/
から、取れるかも。

776 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:21:35 ]
>>774
deleteした直後にNULLを代入するのは、
二重解放によるヒープの破壊を防ぐために良いことだが、
そうすると二重解放していてもチェックに引っかからないぞ!

NULLを代入するのをやめるか、
NULLの代わりに-1などのアリエナイ値を代入するのがいいかと。

777 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:26:58 ]
へー

778 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 01:41:57 ]
^←これどうやって入力するんでしょうか?いい加減コピペは卒業したい

779 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 01:43:44 ]
キーボード右上「へ」のキー
ってか、ここはC/C++の質問スレなわけで・・・

780 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 01:46:35 ]
>>778はポケコンの使い手



781 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 02:54:30 ]
^おぉ出た〜!!Thank you very much.
演算子で使うんです。

782 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 03:40:19 ]
>>781
メモ帳とかでキーボードのキー全部押して試してみたら・・・
Shift押しながらのキーも・・・

783 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 07:38:34 ]
キートップに刻印されているのだから、
キーボードをよく見ろ、でいいと思うが。

784 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 07:41:12 ]
たまにいくつかの記号の類を出せないキーボードはあるよな
なに考えて作ったのかと思う

785 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 08:04:29 ]
>>784
もしかして:ASCII配列のキーボードをJIS配列の設定で使用?

786 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 15:28:10 ]
うちのキーボードは半角の”\”だせなんだぜ?
\になる。

787 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 15:43:42 ]
前は、チルダの位置が2つずれてなかったっけ。
今のはちゃんとしてるようだが。

788 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 15:43:50 ]
俺も俺も

789 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 17:11:13 ]
だいぶ前だけど、I/Oの「今月の添付ディスク」コーナーでは
毎回必ずアンダーバーの入力の仕方が書いてあったことを思いだした

790 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 17:32:12 ]
変な質問かもしれませんが
OSはC言語で作られているんですよね?

WindowsのアプリケーションはWinMain関数ですが、Windows自体の
main関数はどのような感じに記述されてるんでしょうか?

MSの人で無いと解らないんですかね?



791 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 17:38:56 ]
>>790
・C言語で書かれた物が、全てmain()を持っているわけではありません。
・main()はアプリケーションの入り口としての規格上の共通部であり、どう実装されるかは環境依存です。

792 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 17:39:13 ]
>>790
WinMain や main は、それを呼び出すルーチンがあって
リンク時にそれをリンクしてるだけなんだぜ。
そのルーチンがどうなってるかは気にならないのか

793 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 17:49:47 ]
>>791
>C言語で書かれた物が、全てmain()を持っているわけではありません。
そうなんですか・・。Cの全てのソフトがmainとかWinMainで始まると思っていました。

>main()はアプリケーションの入り口としての規格上の共通部であり、どう実装されるかは環境依存です。
つまり色んなOSのアプリケーションの入り口として〜mainなのですか。

>>792
>WinMain や main は、それを呼び出すルーチンがあって
>リンク時にそれをリンクしてるだけなんだぜ。
>そのルーチンがどうなってるかは気にならないのか

気になりますね。でも、そーゆーの気になりだすと
最終的には電気信号とかのレベルまで行かなくならなきゃならなそうです。。。
とりあえず今はC勉強します。お二方とも解答ありがとうございます。

794 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 17:56:36 ]
アセンブラの勉強をしてみるといいかもね。

795 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 18:06:10 ]
あ専ブラですか、分かりました。

796 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 18:12:19 ]
俺の発言みたいにとられるようなレスしないでください。
どうでもいいけど。

797 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 18:13:05 ]
crt0.asm とかね

798 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 18:17:29 ]
>>796
お前の発言みたいにとらないでください。
どうでもいいならレスするな死ね。

799 名前:794=791 mailto:sage [2007/08/09(木) 18:29:29 ]
>>796
自己主張したいならコテでもつけとけ。

800 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 18:32:30 ]
>>798
だって>>793のレスに対して>>794はレスされたのに
無関係のお前が>>795みたいなレスされたら誤解するだろ。

>>799
こんな馬鹿げた自演してどうすんだよ。しょーもない。
やっぱどの板でもID表示欲しいわ。とりあえず今日はROMる。



801 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 18:34:36 ]
どうでもいいんだろ。
誤解されとけや

802 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 18:45:21 ]
>>793
本題から少し脱線してしまうが・・・
Windowsのアプリケーションの入り口は、厳密には、WinMainではないよ。

Windowsがアプリの実行ファイル(EXE)をロードして実行する際の入り口は、
「エントリポイント」と呼ばれているが、それは特定の名前のC言語の関数ではない。
C言語に限定されていないし、ましてや、C言語の関数名でもない。

マイクロソフトのCコンパイラ・リンカを使っているのであれば、
リンカのマニュアルで/ENTRYオプションの説明を読むべし。


803 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 18:46:53 ]
アセンブラの勉強しても仕方ないだろう。
マシン後とアセンブリー言語が理解できるようになってから、アセンブラを勉強したほうがイイ。


804 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 18:54:11 ]
マシン「語」
アセンブリ「言語」
なんて使う必要がなければ、理解しなくていいよ。

基本的なコンピュータのアーキテクチャを知っていれば、それで十分。

805 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 22:58:02 ]
いや、仕事で使うから覚えますた ってだけじゃぁなぁ
金にはならないかもしれないけどとことんやれば良いと思うよ

806 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 23:11:36 ]
そういう人好き

807 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 00:27:24 ]
>>790
初期のUNIXは確かに古いC言語や一部アセンブラで書かれていた。
だが、Windowsや旧MacOSやμiTRONやVxWorksや...(略)はC言語で書かれているのだろうか?

808 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 00:41:43 ]
今でも一部アセンブラは当然として、
MacOSはObjectiveCかPascal、
他もCやC++、
字句解析などでは適宜別の言語、
などなど適材適所でしょ。

809 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 08:02:59 ]
>>805
仕事かどうか、金になるかどうか以前に、
人生に許された時間は限られているんだよ。

>>807
WindowsはNT系はC言語で書かれたと聞いてる。
NT4.0の頃に聞いた話なので今は違うかもしれない。


810 名前:デフォルトの名無しさん [2007/08/10(金) 16:34:55 ]
低俗な質問でほんとすいません。
クラス型のポインタを持つ配列を作りたくて苦心していますが上手く行きません。

(global.h) extern class hoge *p[10];
(global.cpp) hoge *p[0] = new hoge;

と書いていまして、.cppのほうでエラーが出ます。
文法的に間違っていると思うのですが、どこが間違っているのでしょうか?

宜しくお願いします。




811 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 17:19:31 ]
いろいろ違う気がするが・・・w
エラーメッセージ出して1つずつ解決しては。

class定義は見える位置にあると仮定して、
extern hoge *p[10];
p[0] = new hoge;
とやるかな。


812 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 18:24:56 ]
>>810
問題の中身よく見てないけど、とりあえず上の方に出てるやつ数個でも良いからエラーの内容書け

813 名前:810 [2007/08/10(金) 18:43:28 ]
>>811
ありがとうございます。
なお、クラスを定義してる"Hoge.h" もGlobal.hにてインクルードしてます。
今、エラーコード全部ぐぐって内容見てる途中です。

>>812
error C2040: 'PC' : 'int []' は 'cHoge *[4]' と間接操作のレベルが異なります。
error C2440: '初期化中' : 'cHoge *' から 'int []' に変換できません。
error C2466: サイズが 0 の配列を割当てまたは宣言しようとしました。
error C2501: 'PC' : 識別名を宣言するのに、型が指定されていません。
(※クラス名だけはcHogeに書き換えています)

というエラーが出るんですが、ぐぐってみても今ひとつ要領を得ないのです。
「ああ、こういう間違った書き方してるから暗黙的にint型にされてるんだな」とは分かるんですが、では正しい書き方はどうなのかというのが分かりません。

普通にint型とかchar型のポインタ配列作る気持ちでやってたら、ちょっと勝手が違うようですね。手強いです。


814 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 19:03:38 ]
>>813
>hoge *p[0] = new hoge;

hoge *p[0];
p[0] = new hoge;

hoge *p[0];
だと
>error C2466: サイズが 0 の配列を割当てまたは宣言しようとしました。
が出る。

だから
hoge *p[10];
p[0] = new hoge;

この辺はintやらcharでも変わらんと思うけど。

>>811のexternは書き間違いとちゃうかな。
勘違いだったらすんません。

815 名前:810 [2007/08/10(金) 19:15:13 ]
>>814
ありがとうございます。
いままさに、同じような感じで書いていました。
結果は×でした。エラー内容全く同じ……

(Global.h)
#include "HogeHoge.h"(クラス内容の書かれたヘッダ)
extern class cHoge *PC[4];

(Global.cpp)
cHoge *PC[4];
PC[0] = new cHoge;

という状態で、全く同じエラーでます。

どうやら、PC[0]が*PC[4]の一部と見なされてない感じです。
エディタ上でPC[0]の上にマウスカーソル乗せたら、
cHoge *PC[4]ってポップアップが出てるんで、余計にわけわかんない。
なんで暗黙的int扱いされるんでしょう?


816 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 19:20:28 ]
ごめん。
全然違うわ。

extern cHoge PC[4];

cHoge PC[4];

こうじゃねぇ?

817 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 19:23:15 ]
なんだよ、よそで配列定義してあってのexternじゃないのかよ。
ファイル1つでうまくいった上で、分けたらおかしくなってるのか
もともとやりかたがわかんないのかどっちだよ。

818 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 19:28:08 ]
とりあえず、これでどうなる
(Global.h)
#include "HogeHoge.h"(クラス内容の書かれたヘッダ)
extern cHoge *PC[4];

(Global.cpp)
cHoge *PC[4];
PC[0] = new cHoge;

念のため言っておくけど、こっちではコンパイルできてるから
うまくいかないなら環境書いてね

819 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 22:31:55 ]
なんか知らんが、トップレベルに
PC[0] = new cHoge;
を書いてるんじゃなかろうな。

820 名前:810 [2007/08/11(土) 09:46:02 ]
おはようございます。
3時過ぎまで頑張っていました。

>>817
そうです。分けたらおかしくなりました。

>>818
Global.h に extern class cHoge *p[4]; と書き、どこでも良いので関数内で
cHoge *p[4]; p[0] = new cHoge; は上手く行きました。

所で、extern class cHoge ではなく、extern cHoge なのですか?
そう書くとずらずらエラーがでるのですが……
ちなみに、他にもextern class hogehoge *tmp; という書き方でグローバルな
インスタンスを3つほど作っていて、そちらは問題なく動いているのですが、
これはexternに対する私の理解が根本的に間違っているのでしょうか?

>>819
えっと、その通りです。global.cppは、関数を含まないソースファイルです。
Global.hでextern宣言したものに実体を与えてグローバルクラスとして使うための
ものです。
上記の通り、トップから外して関数ないで宣言したら普通に使えました。
やはり、根本的に何か間違っていますか?




821 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 10:27:14 ]
>>820
何というか・・・

まず1つ目
グローバルなオブジェクトには、どこかに実体が必要だが、
その実体というのは、cHoge*なのであってcHogeではない。
グローバルスコープでnewするのは行儀が悪いのでやるべきではない。

2つ目
クラスの定義が既に済んでいるのであれば、class は書く必要がない。
もしclassを書かないと具合が悪いのであれば、クラスの定義が済んでいない。

3つ目
グローバルなオブジェクトは気軽に作るべきではない。

822 名前:810 [2007/08/11(土) 10:53:07 ]
>>821
実はいま、グローバルを極力廃止して書き直してます。
そちらでは問題なく動いています。

「よく使うのはもう纏めてグローバルにしたら?」って言われてやってみたのですが、
確かに初動は早いけどひとたびエラー起こったらわけ分からなくなりました。

>その実体というのは、cHoge*なのであってcHogeではない。
!!!
class書かないとエラーでるので、仰るとおり、定義されてないようです。
そうか、そういうことだったのか……

グローバルスコープでのnewもやめます。
ありがとうございました。


823 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:17:31 ]
最近C++を始めて、静的配列のdelete[]クラッシュにはまったんですが、疑問があったので質問

以下のコードでクラッシュしないのはなぜ?
#include <string>
int main(){
int is=0; //これが無いとクラッシュ
std::string array[2] = {"hoge", "fuga"};
delete[] array;
return 0;
}

コンパイラはMS製です

824 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:18:44 ]
そもそもdeleteなんているのか?newがみえないんだが・・・

825 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:26:43 ]
new[] してないものを delete[] してはいけません。
new[] と delete[] は1対1

826 名前:823 mailto:sage [2007/08/11(土) 22:27:30 ]
いらないことは分かってますけど、ただ疑問に思ったので…
上記のエラーを探ってた時に、変数の有り無しでプログラムのクラッシュするしないが変わるものかなと…

827 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:29:22 ]
スタック破壊。

828 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:31:41 ]
>>826
たまたま使ってるコンパイラではクラッシュしなかっただけの話だろ。
他のコンパイラだと鼻から悪魔が出てきても文句は言えない。

829 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:36:29 ]
>>826
その手の行為で、どんなことが起きるかは、基本的に予測できない。
間違ったことをした、ずーーーーーっと後で落ちる、っていうことも多い。
知らないうちに関係ない変数が書き換わってる、とかいう現象になることもある。

830 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 23:38:38 ]
サンクス、何となく理解した



831 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 23:40:09 ]
>>810=>>822
1〜2KByte以下のRAMの少ないマイコンならそういうテもあるが、
そうでもなければグローバルにまとめるのはやめとけ。

PCのプログラミングならグローバル変数を使わなくてはならない状況はまず考えつかない。
仮にあったとしても、保守erが苦労するだけなので使わないようにしている。

ちなみに、
hoge_type *p[10];

みたいな用例は時折あると思うが、演算子の評価順と同じで、この p は、
hoge_type *p;
が10個ある配列になる。だから、通常は

ヘッダファイル
extern hoge_type *p[10];
か、
extern hoge_type *p[];
になる。

時々間違えるのは、ちょっとうまい使い方を覚えたC/C++言語erが

hoge_type *p[10];
という定義に対して

extern hoge_type **p;
または
extern hoge_type p[][10];
などとしてしまうことであり、これは正常に働かない。




832 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 23:54:09 ]
>>823
ちょっと論点をずらすが、

std::string array[2] = {"hoge", "fuga"};

これは、std::stringの定義を理解した上での記法であり、
std::stringは引数が空のコンストラクタを持っているので、

std::string array[2];
array[0] = "hoge";
array[1] = "fuga";

とした方が安全。


833 名前:デフォルトの名無しさん [2007/08/12(日) 00:14:06 ]
VC++2005 Express Editionでは、atoi()やstrtok()といった古い関数は使えないのでしょうか?
VC6で作ったソースを読み込んでコンパイルしたら、コンパイルは通るのですがリンカエラーがでます。
必要なヘッダのincludeはしています。
”LNK2019: 未解決の外部シンボル __imp__strtok が関数 _main で参照されました。”
というリンカエラーやLNK2001がでます。

#include <stdio.h>
#include <string.h>

int main(void)
{
char str[] = "ABCD ef.1234.G";
char *tp;
tp = strtok( str, " ." );
puts( tp );
while ( tp != NULL ) {
tp = strtok( NULL," ." );
if ( tp != NULL ) puts( tp );
}
return 0;
}

例えばこれだと、putsにもstrtokにも同じ上記リンカエラーがでます。
お手上げです。よろしくおねがいします。


834 名前:デフォルトの名無しさん [2007/08/12(日) 00:30:30 ]
板違いかもしれません。ですが質問します。
同じ質問をVBスレでしたのですが、
私の聞いた事がレベルが低いのか、書き方が悪いのか、
回答が得られなかったので書きます。

C#.NETとVB.NETの違いって何ですか?

調べてみると、(触り程度)
C#.NETにメモリーを切る(確保)概念が無くなったと。
だったら、方言とコンパイルの速度だけの違いになりますか?

835 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:33:36 ]
>>834
言語が違うってだけじゃ不満?

836 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:35:57 ]
C#.NET と VB.NET の違い・・・ 言語が違います。以上。

メモリーを切るって意味不明

837 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:38:45 ]
ふと、疑問に思った。
.NET自体触ったことないんだけど、VB.NETってインタプリタじゃないの?

838 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:45:30 ]
ない
JITでネイティブコードにコンパイルされる

839 名前:デフォルトの名無しさん [2007/08/12(日) 00:47:01 ]
ちょっと、この話は興味ある。
言語が違うだけって、書き方が違うだけなの?
C#の方が、いろいろ出来るイメージがあるけど。

840 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:47:50 ]
やっぱそうなのか・・・
C#とVBでネイティブコードレベルで違いって大きくでたりするもの?
って、違いがあったら.NETの意味がなくなるからそんなことない?



841 名前:デフォルトの名無しさん [2007/08/12(日) 00:53:04 ]
人から聞いた話。
C#の方が早いって聞いた。(アプリの動き)
あと、マイクロソフトがVBよりC#に重きを置いてるとも。

842 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:53:27 ]
>>840
ない。前にMSがC#でもVB.NETでも同じコードをコンパイルしたら、
同じIL(中間言語)になると宣伝していた覚えもある。
(ただしデフォルトではオプションが異なるので、そのままでは全く同じILにならないという註付きで)

>>834
記憶域を確保するという概念がなくなったというより、
それを解放する操作を明示する必要がなくなったというのがより正確。
そして、それは.NETの特徴なので、これはC#でもVB.NETでも同じ。

843 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:54:30 ]
つまりは慣れてる言語で書くのがいいってことでFA?

844 名前:デフォルトの名無しさん [2007/08/12(日) 00:56:43 ]
>>842
ありがとうございます。

う〜ん、あまり、VBとC#の差異が見えませんね。
調べてみたら、C#の方が開発期間が長くなるとありました。


845 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:07:57 ]
VB.NET だと unsafe コードが書けない、っていうのはある

846 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:30:13 ]
どうでも良いが、なんでこのスレで質問したんだろう・・・。
C#もVB.NETも、C/C++とはほとんど関係ないと思うんだが。

847 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 03:53:27 ]
「スレ立てるまでもない質問はここで」と見間違えたとかかな?

848 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 07:14:32 ]
>>823
「クラッシュ」と一言で片付けるあたりがダメぽ。
せっかくランタイムライブラリやOSが情報をくれているのにね。

ちなみにdelete[]の実装を見てみ。

849 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 07:23:19 ]
>>833
「エラーが出ます」と言って思考停止するなよ。

エラーメッセージは読むこと。
意味がわからなければ、リンカのマニュアルのエラーの解説を読むこと。

850 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 07:30:35 ]
>>844
VB.NETとC#は当初、機能に違いがなく、字面だけの違いで、機械的に相互にコンバート可能だった。
ぶっちゃけ、VB.NETにはVB風の字面という存在価値しかなかった。

ところが、VB専門の連中が、
VB.NETへの移行のために勉強すべきことが多すぎて嫌だと拒否したので、
しかたなく、VB.NETはVBに近くなるように、C#と機能に違いを持たせることになった。

そういう経緯なので、C#に何の抵抗も無い人は、C#とVB.NETで開発期間は違わない。
VB.NETを使ったほうが便利な部分があれば、そこだけピンポイントでVB.NETで書けばいい。




851 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 08:26:46 ]
鼻から悪魔なんて久しぶりに

852 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 08:37:28 ]
>>844
ぶっちゃけ、セミコロンがあるかないかの違い。
VBしか書けないダメ派遣はどうやってもセミコロンが書けないらしいよ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<282KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef