C言語何でも質問掲示板


アンケートにご協力下さい → >> アンケートフォーム <<

規約と使い方

 
   extern宣言とグローバ ....   
     ・[17947] kazuoni 
     ・[17958] <kor 
     ・[17967] たかぎ 
   ヘッダファイル無しで ....   
     ・[17962] ibis 
     ・[17963] たかぎ 
     ・[17964] 山下 
     ・[17965] たかぎ 
   コンパイラによる違い   
     ・[17941] tkmakwins15 
     ・[17942] たかぎ 
     ・[17949] 翡翠 
     ・[17950] 翡翠 
     ・[17951] tkmakwins15 
     ・[17952] tkmakwins15 
     ・[17953] tkmakwins15 
     ・[17954] 翡翠 
     ・[17956] tkmakwins15 
     ・[17957] 管理人 
     ・[17960] 翡翠 
   int search = FALSE  ....   
     ・[17945] kazuoni 
     ・[17948] Hermit 
   コンストラクタが・・ ....   
     ・[17931] たかぎ 
     ・[17932] J 
     ・[17933] たかぎ 
     ・[17934] J 
     ・[17935] たかぎ 
     ・[17937] J 
   c言語について   
     ・[17910] たかぎ 
     ・[17911] sato 
     ・[17912] たかぎ 
     ・[17913] sato 
     ・[17915] box 
     ・[17916] たかぎ 
     ・[17918] sato 
     ・[17919] たかぎ 
     ・[17922] sato 
     ・[17924] たかぎ 
     ・[17926] sato 
     ・[17927] box 
     ・[17928] sato 
     ・[17929] たかぎ 
   配列   
     ・[17752] box 
     ・[17753] すく 
     ・[17755] box 
     ・[17756] すく 
     ・[17798] box 
     ・[17810] ナンバーズ 
     ・[17811] box 
     ・[17923] ナンバーズ 
   作成するゲームのレベ ....   
     ・[17866] Mist 
     ・[17878] kazuoni 
     ・[17880] バグ 
     ・[17881] Mist 
     ・[17897] 管理人 
     ・[17902] へろり 
     ・[17906] たかぎ 
     ・[17907] finnissy 
   管理人様へ...大変申し ....   
     ・[17893] 管理人 
     ・[17898] <kor 
     ・[17899] 管理人 
     ・[17900] <kor 
   int WINAPI (以下略) ....   
     ・[17813] 狼肉 
     ・[17814] 管理人 
     ・[17816] toyo 
     ・[17873] 狼肉 
   再帰   
     ・[17863] box 
     ・[17870] mosaa 
   構造体って何????   
     ・[17821] たいちう 
     ・[17822] やそ 
     ・[17823] ランド 
     ・[17824] バグ 
     ・[17830] LUNA 
     ・[17832] 管理人 
     ・[17851] LUNA 
     ・[17852] たかぎ 
     ・[17865] LUNA 
   数字混じりのプログラ ....   
     ・[17829] toyo 
     ・[17833] たまいら 
     ・[17859] c言語 
   標準ライブラリのmapに ....   
     ・[17856] バグ 
     ・[17858] バグ 
   静的変数を使用してFP ....   
     ・[17840] LUNA 
     ・[17841] LUNA 
     ・[17842] LUNA 
     ・[17844] Justy 
     ・[17845] LUNA 
     ・[17846] LUNA 
     ・[17847] Justy 
     ・[17848] LUNA 
   他のクラスのメンバ関 ....   
     ・[17600] Blue 
     ・[17688] J 
     ・[17690] バグ 
     ・[17722] J 
     ・[17724] バグ 
     ・[17837] J 
   英単語のソート   
     ・[17754] box 
     ・[17758] ibis 
     ・[17778] 雷 
     ・[17803] マキガミ 
     ・[17807] box 
     ・[17809] box 
     ・[17817] 雷 
     ・[17836] マキガミ 
   動く背景の作り方につ ....   
     ・[17815] 管理人 
     ・[17835] ぬっち 
   無題   
     ・[17780] kazuoni 
     ・[17784] やそ 
     ・[17786] アルエ 
     ・[17787] やそ 
     ・[17788] やそ 
     ・[17789] Mist 
     ・[17790] やそ 
     ・[17791] Mist 
     ・[17792] たいちう 
     ・[17793] たいちう 
     ・[17794] やそ 
     ・[17795] Mist 
     ・[17819] やそ 
   C++とDXライブラリを ....   
     ・[17702] バグ 
     ・[17704] 管理人 
     ・[17705] flaaaag 
     ・[17708] Mist 
     ・[17709] バグ 
     ・[17723] flaaaag 
     ・[17726] Mist 
     ・[17727] バグ 
     ・[17729] flaaaag 
     ・[17806] flaaaag 
     ・[17818] Mist 
   テキストファイルの扱 ....   
     ・[17748] toyo 
     ・[17749] ibis 
     ・[17757] hiroma 
     ・[17760] ibis 
     ・[17764] hiroma 
     ・[17766] ibis 
     ・[17808] hiroma 
   気持ちよく利用するた ....   
     ・[17468] やそ 
     ・[17481] tkmakwins15 
     ・[17483] kazuoni 
     ・[17486] 雷 
     ・[17488] やそ 
     ・[17491] たいちう 
     ・[17502] tkmakwins15 
     ・[17503] やそ 
     ・[17504] やそ 
     ・[17505] kazuoni 
     ・[17507] tkmakwins15 
     ・[17519] Justy 
     ・[17521] BCI-3e 
     ・[17522] 管理人 
     ・[17527] tkmakwins15 
     ・[17528] たかぎ 
     ・[17529] たかぎ 
     ・[17531] tkmakwins15 
     ・[17532] たかぎ 
     ・[17533] Justy 
     ・[17534] Justy 
     ・[17535] tkmakwins15 
     ・[17547] 管理人 
     ・[17552] tkmakwins15 
     ・[17556] Justy 
     ・[17597] 管理人 
     ・[17599] tkmakwins15 
     ・[17601] 雷 
     ・[17602] 管理人 
     ・[17604] 雷 
     ・[17605] やそ 
     ・[17612] BCI-3e 
     ・[17617] Mist 
     ・[17619] 管理人 
     ・[17620] 管理人 
     ・[17623] やそ 
     ・[17625] sousi 
     ・[17626] BCI-3e 
     ・[17628] tkmakwins15 
     ・[17631] tkmakwins15 
     ・[17638] 管理人 
     ・[17639] 雷 
     ・[17643] たかぎ 
     ・[17644] やそ 
     ・[17646] kazuoni 
     ・[17651] 組木紙織 
     ・[17654] 管理人 
     ・[17668] やそ 
     ・[17673] tkmakwins15 
     ・[17675] たかぎ 
     ・[17677] やそ 
     ・[17679] tkmakwins15 
     ・[17681] やそ 
     ・[17683] たかぎ 
     ・[17684] 管理人 
     ・[17686] BCI-3e 
     ・[17694] たかぎ 
     ・[17697] たいちう 
     ・[17699] たかぎ 
     ・[17703] 管理人 
     ・[17710] Mist 
     ・[17716] たかぎ 
     ・[17717] やそ 
     ・[17719] たかぎ 
     ・[17736] 管理人 
     ・[17737] 管理人 
     ・[17738] 管理人 
     ・[17739] たかぎ 
     ・[17740] Mist 
     ・[17765] tkmakwins15 
     ・[17767] ibis 
     ・[17768] tkmakwins15 
     ・[17769] 管理人 
     ・[17770] たかぎ 
     ・[17771] YuO 
     ・[17772] LUNA 
     ・[17773] 管理人 
     ・[17774] 管理人 
     ・[17775] 管理人 
     ・[17776] たかぎ 
     ・[17777] 雷 
     ・[17782] やそ 
     ・[17785] やそ 
     ・[17802] tkmakwins15 
     ・[17805] LUNA 
   MS VC STUDIOで二つバ ....   
     ・[17634] やそ 
     ・[17635] Mist 
     ・[17636] やそ 
     ・[17637] lbfuvab 
     ・[17676] tkmakwins15 
     ・[17680] やそ 
     ・[17691] Mist 
     ・[17693] やそ 
     ・[17695] バグ 
     ・[17696] やそ 
     ・[17711] Mist 
     ・[17713] やそ 
     ・[17721] うろこ 
     ・[17759] tkmakwins15 
     ・[17761] バグ 
     ・[17763] tkmakwins15 
     ・[17781] バグ 
     ・[17783] 組木紙織 
   C/C++によるCGI作成に ....   
     ・[17538] たかぎ 
     ・[17554] tkmakwins15 
     ・[17559] たかぎ 
     ・[17563] tkmakwins15 
     ・[17564] たかぎ 
     ・[17565] tkmakwins15 
     ・[17566] たかぎ 
     ・[17569] tkmakwins15 
     ・[17570] たかぎ 
     ・[17573] tkmakwins15 
     ・[17577] たかぎ 
     ・[17580] tkmakwins15 
     ・[17588] たかぎ 
     ・[17670] tkmakwins15 
     ・[17674] たかぎ 
     ・[17678] tkmakwins15 
     ・[17682] たかぎ 
     ・[17687] toyo 
     ・[17762] tkmakwins15 
   配列の初期化と配列へ ....   
     ・[17537] box 
     ・[17539] たかぎ 
     ・[17546] すく 
     ・[17548] フランスパン 
     ・[17550] box 
     ・[17551] たかぎ 
     ・[17567] フランスパン 
     ・[17572] box 
     ・[17576] フランスパン 
     ・[17578] box 
     ・[17584] フランスパン 
     ・[17590] box 
     ・[17607] フランスパン 
     ・[17608] box 
     ・[17666] フランスパン 
     ・[17689] box 
     ・[17747] フランスパン 
     ・[17751] box 
   キャラのジャンプにつ ....   
     ・[17657] 管理人 
     ・[17659] 管理人 
     ・[17662] Justy 
     ・[17685] overdo 
     ・[17707] 管理人 
     ・[17746] Justy 
   無題   
     ・[17714] たかぎ 
     ・[17715] つん 
     ・[17718] やそ 
     ・[17743] 管理人 
   常微分方程式(過渡回 ....   
     ・[17692] たいちう 
     ・[17698] たかぎ 
     ・[17700] やそ 
     ・[17706] 管理人 
     ・[17742] Hermit 
   システムコールによる ....   
     ・[17735] やそ 
     ・[17741] たまいら 
   ループと関数について   
     ・[17558] sousi 
     ・[17560] Mist 
     ・[17561] sousi 
     ・[17603] Mist 
     ・[17610] BCI-3e 
     ・[17614] やそ 
     ・[17624] sousi 
     ・[17627] やそ 
     ・[17629] BCI-3e 
     ・[17630] バグ 
     ・[17633] やそ 
     ・[17642] やそ 
     ・[17728] やそ 
     ・[17730] sousi 
     ・[17731] やそ 
     ・[17732] Mist 
     ・[17733] やそ 
   EMFをビットマップにし ....   
     ・[17513] すく 
     ・[17665] toto 
     ・[17725] ま〜く 
   配列の質問です・・・   
     ・[17615] ttt 
     ・[17616] ttt 
     ・[17618] やそ 
     ・[17720] ttt 
   外部からのデータ読み ....   
     ・[17656] 管理人 
     ・[17658] box 
     ・[17661] フリオ 
     ・[17663] フリオ 
     ・[17664] フリオ 
     ・[17667] ほっしゃん 
     ・[17669] ほっしゃん 
     ・[17671] フリオ 
     ・[17672] やそ 
   無題   
     ・[17641] やぶt 
     ・[17645] バグ 
     ・[17647] 管理人 
     ・[17648] やそ 
     ・[17649] たかぎ 
     ・[17652] やぶt 
   SML♯でのヒープソート ....   
     ・[17650] ☆ 
   表示がうまくいかない ....   
     ・[17447] box 
     ・[17487] pilot 
     ・[17490] box 
     ・[17611] pilot 
     ・[17621] pilot 
     ・[17622] Mist 
     ・[174461214811279] pilot 
   デバッグ途中のメッセ ....   
   ディレクトリを示す方 ....   
     ・[17297] たかぎ 
     ・[17298] Haru 
     ・[17301] たかぎ 
     ・[17303] Haru 
     ・[17306] たかぎ 
     ・[17380] Haru 
     ・[17381] toyo 
     ・[17382] Haru 
     ・[17463] Haru 
     ・[17464] Haru 
     ・[17465] Mist 
     ・[17466] Mist 
     ・[17494] Haru 
     ・[17511] lbfuvab 
     ・[17606] Haru 
   タイトルの選択画面が ....   
     ・[17579] kazuoni 
     ・[17583] 入門者 
     ・[17585] DDSS 
     ・[17589] kazuoni 
     ・[17591] kazuoni 
     ・[17593] 入門者 
     ・[17595] kazuoni 
     ・[17596] 入門者 
   ヒープソートの大きい ....   
     ・[17594] ONTA 
   STGのレーザーの作り方 ....   
     ・[17518] 名無しさん 
     ・[17523] 管理人 
     ・[17524] 管理人 
     ・[17562] ぬっち 
     ・[17574] 管理人 
     ・[17587] ぬっち 

Name: <kor  ..入門者(2,632ポイント)   Date: 2008/06/29(日) 02:06   No:17946       
Title: extern宣言とグローバル変数の意味について...    
本格的にシューティングゲームの開発をしようと思い、シューティングゲームの館を見ながら、
コピーペーストでどんどん進むより意味を理解しながら自分で手を加えていって進めようと1から見て行くと、
『先ほどのプログラムを分割する』のところに出てきた、extern宣言とグローバル変数の意味が良くわかりませんでした。
ウィキペディアで調べてみましたが(自分の勉強不足で)よく意味が理解できませんでした。
どなたか、extern宣言をしたりグローバル変数を使うとどのような効果や利点があるのか、具体的に教えてくださらないでしょうか?


215ポイント を手に入れた。


Name: kazuoni  ..上級者(20,076ポイント)   Date: 2008/06/29(日) 02:15   No:17947     
Title: Re:extern宣言とグローバル変数の意味について...    
ここ↓がよくまとめられていますよ^^
・extern宣言
http://homepage3.nifty.com/mmgames/c_guide/20-02.html

・グローバル変数
http://homepage3.nifty.com/mmgames/c_guide/12-02.html#S1


40ポイント を手に入れた。

Name: <kor  ..入門者(2,651ポイント)   Date: 2008/06/29(日) 13:00   No:17958 解決!     
Title: Re:extern宣言とグローバル変数の意味について...    
ありがとうございます。よくわかりました。
かなりわかりやすかったです。


19ポイント を手に入れた。

Name: たかぎ [URL]  ..熟練のプログラマー(44,786ポイント)   Date: 2008/06/29(日) 18:23   No:17967     
Title: Re:extern宣言とグローバル変数の意味について...    
DXライブラリを使うのであればC++でしょうが...

基本的には、グローバル変数やそれを利用するためのexternは使わないようにしましょう。
他に実現方法が無い場合や、他の実現方法よりグローバル変数を使う方法の方が有利なことが明らかな場合に限って使うべきです。
つまり、効果や利点が分からないのであれば、使うのは避けたほうが無難です。



154ポイント を手に入れた。



Name: 山下  ..かけだし(1,178ポイント)   Date: 2008/06/29(日) 14:00   No:17959       
Title: ヘッダファイル無しでいきたい    
山下と申します。皆さんのお知恵におすがりしたく参りました。

XPとVCC2008を使っております。

プログラムを複数のCPPファイルだけで構成して作ろうと考えています。
クラスがどんなメンバを持っているかをヘッダファイルに書いて、
実際の動作を他のCPPファイルに書くというのがどうにも面倒で、
クラスの概要も動作も同じCPPファイルに書きたいと思っております。

実際に3つのCPPファイルだけで書いてビルドしたところ、
「定義されていない識別子です」というエラーが山ほど出てきました。
最初にメイン関数のあるファイルからビルドしてしまい、
他のファイルで定義されているクラスが「定義されていない」ことになってしまいます。

クラスの宣言や動作をヘッダファイルとCPPファイルに分けたりせず、
複数のCPPファイルだけでプログラムを書く方法はあるのでしょうか。
どうか教えていただきたいと思います。


149ポイント を手に入れた。


Name: ibis  ..中級者(11,027ポイント)   Date: 2008/06/29(日) 15:48   No:17962     
Title: Re:ヘッダファイル無しでいきたい    
cppだけだと非常にややこしいです。
まぁできないことはないですが。
1つのcppと複数のhでなら簡単ですよ。
例えば以下のように。

//class1.h
class Class1{
public:
int function(void){
return 1;
}
};


//class2.h
class Class2{
public:
int function(void);
};
int Class2::function(void){
return 2;
}


//main.h
#include <iostream>
#include "class1.h"
#include "class2.h"
int main(void){
Class1 class1;
Class2 class2;
std::cout << class1.function();
std::cout << class2.function();
return 0;
}


322ポイント を手に入れた。

Name: たかぎ [URL]  ..熟練のプログラマー(44,475ポイント)   Date: 2008/06/29(日) 16:06   No:17963     
Title: Re:ヘッダファイル無しでいきたい    
必ずしもよい方法ではありませんが...
// a.cpp

#include "b.cpp"
#include "c.cpp"


のように、リンクではなくインクルードで解決すれば何とかなります。
もう少し現実的な方法としては、インクルードされる側のファイルは、.cppではなく.hppにでもしておいて、関数や非局所オブジェクトの定義はテンプレートかインライン関数だけにするのもよいでしょ。


134ポイント を手に入れた。

Name: 山下  ..かけだし(1,292ポイント)   Date: 2008/06/29(日) 16:37   No:17964 解決!     
Title: Re:ヘッダファイル無しでいきたい    
たかぎさん、返信誠にありがとうございます。

最初に教えていただいた方法で私のやりたい事が実現できました。
ヘッダファイルにはクラスの動作は書けないと思い込んでいたので、
CPPファイルに書くことに固執していたようでした。
基本的なことでお恥ずかしいです。

これで先に進むことができます。本当にありがとうございました。


114ポイント を手に入れた。

Name: たかぎ [URL]  ..熟練のプログラマー(44,510ポイント)   Date: 2008/06/29(日) 18:08   No:17965     
Title: Re:ヘッダファイル無しでいきたい    
実現はできますが、必ずしもよい方法ではないので要注意です。


35ポイント を手に入れた。



Name: 翡翠  ..ぴよぴよ(521ポイント)   Date: 2008/06/28(土) 23:02   No:17940       
Title: コンパイラによる違い    
 管理人さん、この掲示板を利用しているみなさん、はじめまして。
 この掲示板には、今までもそこそこ来ていたのですが、見ていただけでした。が、どうしてもお聞きしたい事がありましたので、質問させていただきます。

 それでは本題について。
 私は大学一年生で、学校の宿題でプログラミングの問題が出ました。講義ではOSはLinuxで、emacsを使用してプログラミングをしています。が、今週の宿題として、関数の利用が出ました。その中で、多次元配列の受け渡しがあったのですが、これがどうしてもできなかったのです。担当の先生に質問してみたところ、私の入力がおかしいとの事でした。が、使用している参考書に擬似問題があったので、それを打ち込んでもコンパイルエラーがおきました。コンパイルすると、「互換性のないポインタを〜」みたいなものが出ます。
 しかし、どうにも納得できないのでWindowsでVisual C++ 2008 を使用してみたところ、配列の受け渡しは問題なくできました。
 これはどういう事でしょうか? コンパイラによって表記が違うのでしょうか? どなたかお教え頂けたらと思います。
 長々とすみません。

 いい機会なので、管理人さんに質問、というよりお願いです。
 簡潔に言うと、私のホームページにリンクを張らせて頂きたいのです。リンクを張る際は掲示板に一言、とありましたので。
 シューティングゲームの館を参考にして、STGを作ろうとしています。知識不足で、いつになるかはわかりませんが。
 どうか、前向きな回答をお聞かせください。


521ポイント を手に入れた。


Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,002ポイント)   Date: 2008/06/28(土) 23:52   No:17941     
Title: Re:コンパイラによる違い    
できればそのコードを載せていただけないでしょうか?

2倍のポイントを手に入れた! 44ポイント を手に入れた。

Name: たかぎ [URL]  ..熟練のプログラマー(44,341ポイント)   Date: 2008/06/29(日) 00:06   No:17942     
Title: Re:コンパイラによる違い    
C++ではなくCの場合、ポインタの型が違っていてもコンパイルエラーにはなりません。
エラーになるとすれば、コンパイラの拡張機能を用いて、警告をエラーにするように設定した場合ぐらいです。

エラーが出るコンパイラは何なのか(多分GCCだと思いますが)、コンパイルに用いた命令(プログラム名とオプション)は何か、そしてエラーメッセージの全文を補足してください。
念のため確認しますが、C++ではなくCですよね。


146ポイント を手に入れた。

Name: 翡翠  ..かけだし(1,048ポイント)   Date: 2008/06/29(日) 09:54   No:17949     
Title: Re:コンパイラによる違い    
 返信が遅れてしまい、申し訳ありません。
 説明不足だったようで、重ね重ね申し訳ありません。
 コードは、ここでは不必要なものが多すぎると思ったので載せませんでしたが、全文を載せた方がわかりやすそうなので、載せることにします。

>tkmakwins15 さん
 インデントできているか不安ですが、


#include <stdio.h>

void mat_add(const int ma[2][3], const int mb[2][3], int mc[2][3])

{
int i,j;
for(i=0; i<2; i++)
for(j=0; j<3; j++)
mc[i][j]=ma[i][j]+mb[i][j];
}

int main(void)
{
int i,j;
int ma[2][3]={{1,2,3},{4,5,6}};
int mb[2][3]={{6,3,4},{5,1,2}};
int mc[2][3]={0};

mat_add(ma, mb, mc);

for(i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%3d",mc[i][j]);
printf("\n");
}
return(0);
}

 です。簡単にいえば、行列の和を求めて表示するプログラムです。

>たかぎ さん
 コンパイラは、お察しのとおりGCCだと思います。
 GNOME コマンド・ライン端末で、
 gcc ○○○○○.c
 と打つので、GCCですよね?
 その結果、

○○○○○.c: 関数 'main' 内:
○○○○○.c:17: 警告: 互換性のないポインタ型からの引数 1 個の 'mat_add' を渡しますです
○○○○○.c:17: 警告: 互換性のないポインタ型からの引数 2 個の 'mat_add' を渡しますです

 と、表示されます。
 正直に言って、ポインタをまだ習っていないので、ポインタ型なんてものは、全く知りません。ポインタというのが、C言語を学ぶ上で当たる壁だとは聞いたことがありますが……

 どうでしょうか? 何か足りないことがあれば、指摘いただければ補足いたします。


527ポイント を手に入れた。

Name: 翡翠  ..かけだし(1,145ポイント)   Date: 2008/06/29(日) 09:58   No:17950     
Title: Re:コンパイラによる違い    
 って、インデントできてない……
 コードを"<pre>"と"</pre>"で囲むんですよね? ここは全角ですが、投稿時は半角で打ちました。どなたかお教えお願いします。
 いろいろとすみません。


97ポイント を手に入れた。

Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,056ポイント)   Date: 2008/06/29(日) 09:59   No:17951     
Title: Re:コンパイラによる違い    
<pre>タグは使っているようですが、インデントがされていないようです。

引数のconstを外すとどうなりますか?


54ポイント を手に入れた。

Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,073ポイント)   Date: 2008/06/29(日) 09:59   No:17952     
Title: Re:コンパイラによる違い    
プログラムを書くときにインデントはしてますよね?

17ポイント を手に入れた。

Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,016ポイント)   Date: 2008/06/29(日) 10:09   No:17953     
Title: Re:コンパイラによる違い    
というか、GCCで

g++ paste.cc

でコンパイルしても通りますが…。

逆に、

gcc paste.c

としてCのコードとしてコンパイルしたほうが警告が出て、C++のコードとして通した時は全く警告が出ませんよ。
("paste.c"というファイル名で、その後、"paste.cc"という名前に変更して実験)


57ポイント を落としてしまった。

Name: 翡翠  ..かけだし(1,596ポイント)   Date: 2008/06/29(日) 10:29   No:17954     
Title: Re:コンパイラによる違い    
>tkmakwins15 さん
 いろいろとありがとうございます。
 インデントをして<pre>タグを入れると、インデントを二回する事になる、と思っていましたので、プログラムの方のインデントはすべて外してしまいました。きっとそのせいですね。以後、気をつけます。
 GCCでのコンパイル方法としては、
 gcc ○○○○○.c の方法しか習っておりません。
 g++ ○○○○○.cc とは、C++のコードのコンパイル方法ですか?
 ということは、上記の
 mat_add(ma, mb, mc);
 という書き方は、C++の書き方なのでしょうか?

 プログラムが読みにくいため、やり直します。以下、上記のプログラムと同じです。これでインデントがされるのでしょうか?


#include <stdio.h>

void mat_add(const int ma[2][3], const int mb[2][3], int mc[2][3])
{
int i,j;
for(i=0; i<2; i++)
for(j=0; j<3; j++)
mc[i][j]=ma[i][j]+mb[i][j];
}

int main(void)
{
int i,j;
int ma[2][3]={{1,2,3},{4,5,6}};
int mb[2][3]={{6,3,4},{5,1,2}};
int mc[2][3]={0};

mat_add(ma, mb, mc);

for(i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%3d",mc[i][j]);
printf("\n");
}
return(0);
}


451ポイント を手に入れた。

Name: tkmakwins15 [URL]  ..比類無きプログラマー(80,157ポイント)   Date: 2008/06/29(日) 10:46   No:17956     
Title: Re:コンパイラによる違い    
>gcc ○○○○○.c の方法しか習っておりません。
>g++ ○○○○○.cc とは、C++のコードのコンパイル方法ですか?

そうです、C++の場合、拡張子が.ccだったり.cppだったりします。

>という書き方は、C++の書き方なのでしょうか?

そうではないです。Cとしてコンパイルしても成功はします。警告は出ますけど…

Linux上ではなくWindows上のCygwinでやってますが、たぶんgccの構文解析は同じはずなので、たぶん大丈夫のはずです。


116ポイント を手に入れた。

Name: 管理人 [URL]  ..伝説のハッカー(609,864ポイント)   Date: 2008/06/29(日) 12:06   No:17957     
Title: Re:コンパイラによる違い    
このHPを作っている管理人です。リンクの件ありがとうございます。もちろんOKですよ。


31ポイント を手に入れた。

Name: 翡翠  ..かけだし(1,774ポイント)   Date: 2008/06/29(日) 15:40   No:17960 解決!     
Title: Re:コンパイラによる違い    
>tkmakwins15 さん
 ありがとうございます!
 Linux上でも、コンパイルできてました。警告が出るだけで、コンパイル自体は成功しているのですね。ちゃんと確認していなかった私のミスです。本当にすみませんでした。そして、ありがとうございます。
 しかし、警告の出ない多次元配列の渡し方って、ないものですかね?

>管理人さん
 リンクの件、ありがとうございます。数日中に張る事に致します。


178ポイント を手に入れた。



Name: 超々初心者  ..かけだし(2,119ポイント)   Date: 2008/06/29(日) 01:10   No:17944       
Title: int search = FALSE がどういう働きをしているのか分かりません    
こんばんは。
入門書のプログラムなのですが、どうしてもプログラムの進行上理解できないことがあり
相談のため書かせていただきました。
このファイルの検索を行うソースコードの中でint search = FALSE; が
一体どのような働きをしているのかが、全く理解できません。
これは全体のソースの中で何の役に立っているのでしょうか?
if(search) { の条件の中にはFALSE、つまり0が入ると思うのですが、
0が入ったらif(0){ となり処理をしなくなるのではないのですか?
入門書に書いてある「フラグを立てる」という概念がイマイチ理解できずに苦しんでいます。
どうか分かりやすく教えていただけないでしょうか?
何卒お願いいたします。


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

#define FALSE 0
#define TRUE 1

main () {
FILE *fp;
char filename[256];
char key[128];
char c;
int keylen;
int i = 0;
int search = FALSE;
int count = 0;


printf("ファイル名を入力して下さい > ");
scanf("%s", filename);
printf("検索文字列 > ");
scanf("%s", key);
keylen = strlen(key);


if((fp = fopen(filename, "r")) == NULL) {
printf("ファイルオープンエラー\n");
exit(1);
}


while((c = fgetc(fp)) != EOF){
if(search) {

if(c != key[i]) { search = FALSE; i = 0; }
else { i++; }
} else {
if(c == key[i]) { search = TRUE; i++; }
}

if(keylen == i) { count++; i = 0; search = FALSE; }
}

fclose(fp);
printf("出現回数 %d\n", count);

return 0;
}


576ポイント を手に入れた。


Name: kazuoni  ..上級者(20,036ポイント)   Date: 2008/06/29(日) 01:34   No:17945     
Title: Re:int search = FALSE がどういう働きをしているのか分かりません    
回答は一応規約を守ってからのがいいかと思うので、とりあえず<pre></pre>(<>は半角)でコードをくくってください。

51ポイント を手に入れた。

Name: Hermit  ..上級者(20,619ポイント)   Date: 2008/06/29(日) 06:58   No:17948     
Title: Re:int search = FALSE がどういう働きをしているのか分かりません    
今、検索文字が現われている最中かどうかのフラグですね。

ちょっとgnuindentで整形して、コメント入れてみました

	while ((c = fgetc(fp)) != EOF) {

if (search) { // 検索2文字目から実行
if (c != key[i]) { // 検索文字と違った時
search = FALSE; // 1文字目からの検索に戻す
i = 0; // ここも、1文字目に設定
} else {
i++; // まだ、検索状態が続く場合、次の文字と合致するかチェックのため i 増やす
}
} else { // 最初の1文字目を見つける時の為
if (c == key[i]) {
search = TRUE; // 1文字目が見つかったフラグ
i++; // 2文字目にセット(i を 1 増やす)
}
}
if (keylen == i) { // 検索文字の最後までいっていたら、
count++; // 出現回数 +1
i = 0; // 検索文字初期状態に戻す
search = FALSE; // まだ見つかっていない状態に戻す
}
}
こんなものでしょうか。

検索途中で、違うと判断した直後に検索文字が現れた場合見逃すというバグもあるようです。

----file.txt-------
ababc
ababc
--------------
検索文字 "abc"
の場合、見つけられない


394ポイント を手に入れた。



Name: J  ..入門者(3,115ポイント)   Date: 2008/06/28(土) 21:05   No:17930       
Title: コンストラクタが・・・    
エラー E2247 c:\item\item\main.cpp 9: 'field::field' はアクセスできない(関数 main() )

と表示されてアクセスできませんorz
このエラー文から推測できる原因はありますか?
あまり、ソースは公表したくないので・・・


102ポイント を手に入れた。


Name: たかぎ [URL]  ..熟練のプログラマー(44,148ポイント)   Date: 2008/06/28(土) 21:08   No:17931     
Title: Re:コンストラクタが・・・    
コンストラクタがpublicまたはprivateの場合が考えられます。

(追記)
↑書き間違い。protectedまたはprivateでした。


16ポイント を手に入れた。

Name: J  ..入門者(3,195ポイント)   Date: 2008/06/28(土) 21:19   No:17932     
Title: Re:コンストラクタが・・・    
すみません、原因は自分でつきとめた、のですが・・・

原因は、fieldをprivateスコープに入れていたからでした。簡単なことでしたorz
しかし、問題がそれになりました。同じクラスのメンバ関数に引数で渡したいだけなのに、クラスの外からは渡せないのでしょうか?
fieldはprivateのままにしておきたいのですが。。


80ポイント を手に入れた。

Name: たかぎ [URL]  ..熟練のプログラマー(44,165ポイント)   Date: 2008/06/28(土) 21:19   No:17933     
Title: Re:コンストラクタが・・・    
ソースを見ないと何ともいえませんね。


17ポイント を手に入れた。

Name: J  ..入門者(3,229ポイント)   Date: 2008/06/28(土) 21:20   No:17934     
Title: Re:コンストラクタが・・・    
あう><
連レスすみません、問題のfieldはコンストラクタではなく、変数の方でした。
ご迷惑おかけしました。


34ポイント を手に入れた。

Name: たかぎ [URL]  ..熟練のプログラマー(44,195ポイント)   Date: 2008/06/28(土) 21:23   No:17935     
Title: Re:コンストラクタが・・・    
> 問題のfieldはコンストラクタではなく、変数の方でした。

全然違いますね。

> 同じクラスのメンバ関数に引数で渡したいだけなのに、クラスの外からは渡せないのでしょうか?


無理です。
privateはクラスの外から触れないようにするためのものですから。


30ポイント を手に入れた。

Name: J  ..入門者(3,217ポイント)   Date: 2008/06/28(土) 22:09   No:17937 解決!     
Title: Re:コンストラクタが・・・    
そうでしたか・・・
回答してくださったみなさん、ありがとうございました。
そして、お騒がしてすみませんでした。


12ポイント を落としてしまった。



Name: sato  ..ぴよぴよ(599ポイント)   Date: 2008/06/28(土) 17:46   No:17908       
Title: c言語について    
はじめまして、satoです。早速質問何んですが、放物線運動の計算を行うプログラムを作成してグラフを作るということを大学の課題でだされました。しかし、自分でやってみたら式はちゃんと書いているはずなのに斜方投射の様なグラフになりません。間違いがないか調べてください。お願いします!               ソース
#include<stdio.h>
#include<math.h>

int main (void)
{
double t,x,y,v0,g,theta;

g=9.8;

theta=30*M_PI/180.0;/*θ=30°のとき */
v0=10; /* M_PIはπの値が定義されている */
for(t=0;t<=2;t+=0.0625){
x= v0*t*cos(theta);
y= -0.5*g*t*t+v0*t*sin(theta);
printf("%lf%lf\n"x,y);
}
return 0;
}


189ポイント を手に入れた。


Name: たかぎ [URL]  ..熟練のプログラマー(43,603ポイント)   Date: 2008/06/28(土) 17:52   No:17910     
Title: Re:c言語について    
とりあえず、ソースは<pre>〜</pre>で囲みましょうか?(実際には半角で書いてください)
利用規約を呼んでいないことがバレバレですよ。


8ポイント を手に入れた。

Name: sato  ..ぴよぴよ(792ポイント)   Date: 2008/06/28(土) 18:05   No:17911     
Title: Re:c言語について    
失礼しました。では、改めて
<pre>
#include<stdio.h>
#include<math.h>

int main (void)
{
double t,x,y,v0,g,theta;

g=9.8;

theta=30*M_PI/180.0;/*θ=30°のとき */
v0=10; /* M_PIはπの値が定義されている */
for(t=0;t<=2;t+=0.0625){
x= v0*t*cos(theta);
y= -0.5*g*t*t+v0*t*sin(theta);
printf("%lf%lf\n"x,y);
}
return 0;
}
</pre>
ちなみにプログラム歴は一ヶ月です。


193ポイント を手に入れた。

Name: たかぎ [URL]  ..熟練のプログラマー(43,806ポイント)   Date: 2008/06/28(土) 18:08   No:17912     
Title: Re:c言語について    
> <pre>

よく読んでください。

「実際には半角で書いてください」

と書きましたよ。

> 間違いがないか調べてください。

少なくとも、
printf("%lf%lf\n"x,y); 



の部分が間違っています(xの前に , がない)。

ところで、処理系不明(printfの書式からして、C99対応の処理系だということは分かります)なので何とも言えませんが...

このプログラムを実行するとグラフが描画されると考えているのであれば多分違います。
そんな表示の仕方をしてくれる標準出力が存在する可能性、あるいはパイプで他のプログラムに食わせる可能性はありますが。


203ポイント を手に入れた。

Name: sato  ..ぴよぴよ(893ポイント)   Date: 2008/06/28(土) 18:15   No:17913     
Title: Re:c言語について    
> このプログラムを実行するとグラフが描画されると考えているのであれば多分違います
ですが、グラフはgnuplotでやれと言われたので、それなしで実行できないのはわかってます。
> パイプで他のプログラムに食わせる
というのは、どういうことですか? a.out > (ファイル名).dat のような感じですか?