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


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

【初心者歓迎】C/C++室 Ver.47【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:14:51 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.46【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1198755167/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

730 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:20:45 ]
>>714
両方あるんじゃなかったっけ?

731 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:26:50 ]
インクルードするヘッダによって違わなかったっけ

732 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:46:02 ]
両方あるなら (tolower) でいいってことか

733 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:46:41 ]
#undef tolowerじゃだめなの?

734 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:00:42 ]
>>732
括弧無くても大丈夫だな。
後ろに ( ) がついてないから。

それにしても、うちの gcc じゃ >>726 みたいなエラーでないんだがなあ。
バージョンが違うのか。

735 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:11:15 ]
tolower(int)のほかに、tolower(char)とかtolower(wchar_t)とかあるんでしょ。

736 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:20:07 ]
Cとの互換関数だから、規格的にオーバーロード出来ないと思うが。

737 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:20:08 ]
なら static_cast<int(*)(int)>(tolower) とかしないといけないのか。
面倒臭いな。

738 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:43:56 ]
<locale>かどこかに、第2引数にロカールをとるバージョンがあったと思う。



739 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:45:47 ]
古いヘッダ .h なら通るんだよな
謎だ

740 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:22:21 ]
>>730
Cでは、関数に加えてマクロを用意しても良かったが、
C++だとそれは認められていない。
(JIS X3014:2003では17.4.1.2の6段落目。更に注(159)で明確に指摘されている)

741 名前:デフォルトの名無しさん [2008/02/01(金) 01:28:39 ]
double pai(){
double i,imax,n;
double x,y,pi;

n=0.0;
imax=10000000.0;
for(i=0;i<=imax;i++) {
x=rand()/(RAND_MAX+1.0);
y=rand()/(RAND_MAX+1.0);
if((x*x+y*y)<1.0) {
n+=1.0;
}
}
pi=n/imax*4.0;
return pi;
}
double px(double t){
double pi=pai();
double x,ans;
ans=exp(-x*x/2t)/sqrt(2*pi*t);
return ans;
}
としたら
エラー E2121 kadai1.c 27: 関数呼び出しに ) がない(関数 px )
と出ましたorz
誰か解決策わかるようでしたら教えてください(;´Д`)

742 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:34:28 ]
exp(-x*x/2t)/sqrt(2*pi*t);

2t?

743 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:43:52 ]
あとx初期化してないよね。

744 名前:デフォルトの名無しさん [2008/02/01(金) 01:44:15 ]
c++でswitch文のcaseの中では変数宣言できないですか

745 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:46:26 ]
case HOGE:
{ int t = 0;}
break;

ブロックで囲めばいいんじゃね


746 名前:741 [2008/02/01(金) 01:58:11 ]
>742
解決しましたw
あざす!!

747 名前:デフォルトの名無しさん [2008/02/01(金) 03:31:40 ]
>>745
こっちも解決しました。ありがとう酢。



748 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 18:16:42 ]
空を自由に飛びたいな
はーい つLSD



749 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:11:19 ]
LoadLibraryでもらったHMODULEはCloseHandleで処分できますか?


750 名前:デフォルトの名無しさん [2008/02/01(金) 19:24:52 ]
どこで質問すればいいのかわからないほどくだらない質問なのですが、
よく引数であるchar* pszMessageのpszってどういう意味ですか?
Pointer Stringはわかるんですが、Zがいったいなんなのか・・・

751 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:27:11 ]
zはzero、szはヌル終端文字列のこと。

752 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:29:52 ]
pointer string zero-terminated

753 名前:749 mailto:sage [2008/02/01(金) 19:30:06 ]
間違えました。

754 名前:デフォルトの名無しさん [2008/02/01(金) 19:31:13 ]
>>751-752
なるほど・・ゼロでしたか
謎がとけました、ありがとうございます!

755 名前:デフォルトの名無しさん [2008/02/01(金) 21:29:40 ]
c++のプログラムを書いてます。
コンソールからstringを入力させたいのですが、getline()とcinを併用すると
何回目かのcinがユーザの入力待ちにならずにそのまま長さゼロの入力を受け取った
と誤解して処理が先に進んでしまうようです。何かフラッシュとかの処理が必要なので
しょうか?

756 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:01:29 ]
エラーが発生したなら
cin.clear(); するまで関数に失敗するが、
そういうわけではなくて?

757 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:13:42 ]
Pointer to a String terminated by Zero

758 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:38:32 ]
std::map<CString, CComPtr<ID3DXFont>> fonts;
に問題はありますか?



759 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:39:47 ]
エラーが出なければ問題は無い。
エラーが出るなら問題。

760 名前:デフォルトの名無しさん [2008/02/02(土) 01:41:21 ]
質問させてください.
c言語でscanfで入力を受けるプログラムをつくりました.
バッチファイルとかシェルスクリプトで入力してやりたいのですが、つまづいています.
要するに、
(実行ファイル)enter(入力)enter
では無く、
(実行ファイル)(入力)enter
のような感じに書く方法がありますか?ということです.


761 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:46:08 ]
int argc, char* argv[]
でググれ。

762 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:48:35 ]
>>760
そのレベルは……ぐぐるとかじゃなくて、本を読んできちんとした知識を身に付けた方が良いよ。
いや、マジで……

763 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:54:08 ]
>>758
STLのこんてなにオートポインタの類入れると

764 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:59:29 ]
とりあえず>>だとコンパイルエラーになったりするので> >にしとけ。

765 名前:デフォルトの名無しさん [2008/02/02(土) 02:37:31 ]
760です.確かに知識は無いです.
実は数値計算だったので簡単に済ませたかったんです.
リダイレクトでパラメータをいれる代わりに、
そのまま数値を書く方法があるのかなと思って質問してみたんですが.

どうやら場違いでした.

766 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 03:34:39 ]
ウィンドウつくったり図を表示したりするのってWin32API勉強しないとできない?

767 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 03:49:03 ]
>763
std::aut_ptrが例外的にダメなオートポインタで、
大抵のスマートポインタは入れても大丈夫じゃねーの。

768 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:09:24 ]
VC6 だが、std::vector に CComPtr 入れると
resize でアサーションエラーが出た。



769 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:31:21 ]
intrasive_ptr?だっけ?
まさにCOMみたいに自前でカウントしてるクラス用のスマポ

770 名前:デフォルトの名無しさん [2008/02/02(土) 12:46:10 ]
string型の変数の中身をlistコンテナに一文字ずつ移そうとしてます。
for_each(string.begin(), string.end(), XXXX);
みたいにfor_eachを使って書けないでしょうか?


771 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:49:16 ]
push_backとmem_fun_ptr

772 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:50:12 ]
mem_fun_refだったorz

773 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:03:58 ]
これはだめ?
std::list<char> l;
std::copy(string.begin(), string.end(), std::back_inserter(l));

774 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:48:54 ]
std::list<char> l(s.begin(), s.end());
または
l.assign(s.begin(), s.end());
だろ。

775 名前:デフォルトの名無しさん [2008/02/02(土) 15:35:03 ]
for_each(s.begin(), s.end(), mem_fun_ref(v.push_back));
ということですか?
でもこれはコンパイルできなかった。

776 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:06:20 ]
>>775
>>773は正しい処理だが、
効率が悪いということじゃないの?

初期化の話だよな?

>>775
そりゃ、あらゆる点で無理だ。

777 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:16:22 ]
v.push_backではなくて&std::list<char>::push_backだろ
まあstd::back_inserterを使うのが最適なわけだが

778 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:18:57 ]
最適は774だって。 EffectiveSTL嫁。



779 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:20:27 ]
元の質問は for_each が使いたいらしいから、 >777 でも間違いではない。

780 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:51:44 ]
>>777
それでもダメ。引数の数が一致しない。
せめてbind1stを使えといいたいところだが
ほとんどの実装でunary_functionで参照の参照が
発生してはじかれる。


781 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:55:14 ]
>>778
範囲指定のイテレータか

782 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:07:39 ]
ぶっちゃけ、メンバ関数をforeachみたいな連中に渡すのは
面倒くさいのでboost使おう、という話になるw

783 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:11:23 ]
だからfor_each使わずに>>774でいいって。

784 名前:784 [2008/02/02(土) 19:38:53 ]
質問です。

//正規分布を求めるメソッド
float BestFitInfo::norDis(float x, float mean, float var){

return 1 / ( sqrt( 2 * 3.14 ) * sqrt(var) ) *

exp( - (x - mean) * ( x - mean ) / ( 2 * var ) );
}

//BestFitInfoというクラスを作って、
//正規分布を求めるメソッドを書いたところ、

warning C4244: 'return' : 'double' から 'float' への変換です。データが失われる可能性があります。

と言われました。すべて引数は float だし、
exp や sqrt の戻り値もそれに合わせて float のはずなので、
どこで double 型が発生しているのかわかりません。

なぜこのようなエラーとなっているのでしょうか?
分かる方がいらっしゃいましたら教えてください。
よろしくお願いします。

785 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 19:45:47 ]
>>784
>exp や sqrt の戻り値もそれに合わせて float のはずなので、
本当か?
floatのはsqrtfとかexpfじゃないのか?
あと、3.14はdouble型だ。float型リテラルは3.14fと書く。

786 名前:784 [2008/02/02(土) 19:59:47 ]
785さん、お返事ありがとうございます。

3.14fと書いたら「データが失われる可能性があります」と言われなくなりました。

sqrtについて調べたところ、

double sqrt(
double x
);
float sqrt(
float x
); // C++ only
long double sqrt(
long double x
); // C++ only
float sqrtf(
float x
);

このように sqrt は多重定義されているようです。
sqrtf はC言語のときの名残のようですね。

解決しました。みなさまありがとうございました。

787 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:11:07 ]
質問です
僕はインクルードガードシンボルにuuidを含ませる事があるんですが
Cのプリプロセッサで処理するシンボルは最大何文字までいけるんでしょう?
#define HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE
ぐらいのものは処理できるならまぁ十分なんですが気になります
あと変数名や名前空間名も何文字までいけるか気になります
ADLバリアを使うと結構文字数増えますし、
もしあまりに少ない文字数(例えば31文字)だったとしたら怖いんで

788 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:23:36 ]
プリプロセッサの制限はわからんけど、
C89までは厳密には識別子は先頭6文字位じゃなかったっけ
C99で32文字になったような気がしないでもない



789 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:39:22 ]
プリプロセッサの制限はわからんけど、

内部識別子は最低32
外部が8くらいだったと思う。6かもしれん。
VC6なんかでは外部256とかで、複雑なtemplateとかで警告が出るね。

790 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:40:07 ]
あ、これはC89ね

791 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:21:31 ]
完全にうろ覚えだけど、マクロ名などの内部識別子は、
C89が31文字で、C99は63文字だったと思う。

792 名前:791 mailto:sage [2008/02/02(土) 23:50:16 ]
C++98ではCにはあったtranslation limitの既定がなくなって、長さに制限はないと明記されているね。
付録のBで内部外部ともに1024文字以上を推奨ってことになってる。(これは一応調べてきた

793 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:14:52 ]
クラスあったら構造体いらないと思うんですが、構造体で宣言する利点って何ですか?

794 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:20:15 ]
メッセージループ(DispatchMessage)に入る前にウィンドウプロシージャにメッセージが飛んでしかも処理されてるっぽいんですが
当たらしく作られた別スレッドで動いてるんですか?このウィンドウプロシージャってやつは

795 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:26:14 ]
ある種のAPIは、直接プロシージャを呼び出して配送する。
有名なのは、UpdateWindowのWM_PAINTなど。

796 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:32:13 ]
ほかにもWM_CREATEやそれより前にやってくるメッセージはCreateWindow(Ex)内部で呼ばれるし、
Send系で送る場合も同一スレッドなら直接呼ばれる。

797 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:33:50 ]
>>795
ああ、なるほど、そういうことですか
そういうパターンをすっかり見落としてました

798 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:37:05 ]
>>793
ただの構造体が欲しいときかな。
たとえば
APIにパラメータを渡したいとき。
ハードウェアをアクセスするとき
オフセットをがっちりあわせたいとき





799 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:37:18 ]
>>793
しかしだね、
class Hoge { public: int id; double data; };
に対して
hogeInst.id = 1;
hogeInst.data = M_PI;
なんて操作をするのは背筋がぞわぞわしないか?

800 名前:デフォルトの名無しさん [2008/02/03(日) 00:59:29 ]
char* str = "aあいう"
みたいに日本語とアルファベットが混在した文字列の、
文字数を数えるにはどうすればいいのでしょうか?
strlen(str);
とすると7になってしまいます。

環境はWindows XPでWin32APIを使ってプログラミングをしてます。

801 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:04:38 ]
wchar_t* str = "aあいう";
wcslen(str);

802 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:05:10 ]
L"aあいう"; だた

803 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:12:01 ]
すいません、少し説明が足りませんでした。

そもそも何がやりたいかというと、
char*からwchar_t*への変換をしたいのですが、

char*変数のstrに'L'をつけて、L(str);とするとエラーになってしまいます。

そこで、MultiByteToWideCharで変換しようと思ったのですが、
wchar_t* wstr = new wchar_t[len];
というふうに、変換後文字のためのバッファをとろうとして、
その長さのlenをどう数えたらいいか分からなくなりました。

804 名前:デフォルトの名無しさん [2008/02/03(日) 01:16:44 ]
>>803
MultiByteToWideCharの仕様をMSDNで良く見直すこと。
とくに戻り値の説明を。

805 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:22:44 ]
>>798-799
ありがとう。構造体で出来るなら構造体で済ました方が楽ってことですね

806 名前:803 mailto:sage [2008/02/03(日) 01:25:33 ]
>>804
ありがとうございます!

len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);

これで長さがとれました。

807 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:30:13 ]
ある関数の返り値を配列でほしいのですが
関数の返り値にvectorやらlistを返すのってありですか?
それとも引数から参照渡しで変更させたほうがよいですか?

808 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:36:04 ]
コストを気にしなければあり。



809 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:08:30 ]
参照渡しで変更させたほうがいいなぁ。
要素数一桁だとか、RVOが可能な記述が出来るならともかく。
どうしても戻り値がいい場合はshared_ptrで包む。

810 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:31:06 ]
バイナリでのファイル入出力って普通のと何がちがうの?
バイナリ形式で保存したのをメモ帳で開いても普通に出力したのと変らないんだけど

811 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:53:33 ]
>>799
C++ にもプロパティがあればいいんだけどね。
拡張機能で用意されてる事もあるが。

812 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:59:27 ]
>>807
配列の先頭アドレスを返す、じゃダメなのかな

>>810
普通のっていうのはテキストモードのことだよね
テキストモードだと改行文字をいじったりしてる

詳しく知りたい場合は「fopen テキストモード」とかでググれば出てくると思う

813 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:15:45 ]
C++の参照渡しって、結局中ではアドレスが渡されてるんですか?

そうじゃないとしたら一体どうなってるんでしょうか?

814 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:21:35 ]
結局中ではアドレスが渡されてる実装しかないだろうな。

815 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:29:27 ]
>>812
ありがとうございます
「 ソε2:ホSSカ「8蟹Mタラ男ユムゥtn鶏」みたいな文字化けしたような感じで
書き込まれるのかと思ってたけど違うのね
こんな文字化けしたようなdatファイルとかってどうやって作ってるの?

816 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:36:58 ]
文字以外を書き込めばなりやすいな

817 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:44:10 ]
>>815
書きたい内容をそのまま書けばいい。

static const unsigned char data[] = {
0xBF, 0x83, 0xC3, 0x32, 0x3A, 0xCE, 0x53, 0x53,
0xB6, 0xA2, 0x38, 0x8A, 0x49, 0x4D, 0xC0, 0xD7,
0x92, 0x6A, 0xD5, 0xD1, 0xA9, 0x74, 0x6E, 0x8C,
0x7B}; // 「 ソε2:ホSSカ「8蟹Mタラ男ユムゥtn鶏」

FILE* fp = fopen("test.dat", "wb");
fwrite(data, 1, sizeof(data), fp);
fclose(fp);

818 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:47:54 ]
そのデータだと

FILE* fp = fopen("test.dat", "w");
fwrite(data, 1, sizeof(data), fp);
fclose(fp);

でも同じ物が書き込まれるがね。

バイナリモードとテキストモードの違いは
メモリ上で 0x0D('\n') となるバイトを
ファイル上でその環境の改行コードに変換するか否かしかない。



819 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 08:05:56 ]
>>817-818
ありがとう。でも全然分からない
おれにはまだ早かったみたいです
とりあえずテキストとバイナリモードの違いは\nとかが違うだけで文字は変わら
ないんですね
勉強してきます

820 名前:デフォルトの名無しさん [2008/02/03(日) 09:13:33 ]
>>811
なければ自分で作ればいいじゃん。
俺は処理系非依存のプロパティ変数クラスを作った。

821 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:00:39 ]
>>819
結果はメモ帳で見るよりバイナリエディタで見た方が分かりやすいかと思う。

何かバイナリモードとテキストモードでもの凄く違うと考えてるみたいだが、
動作的には大した違いはない。
普通は fprintf はテキストモードで、fwrite はバイナリモードで使うが、
別にそう使わないといけないという決まりはないんで、
バイナリモードとテキストモードで同じ物を書き込んで
それぞれどうなるか実験してみればいい。

822 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:25:33 ]
>>820
プロパティリストではなくて、delphiのプロパティ宣言みたいなものが作れるの?


823 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 12:01:34 ]
>>820
初期化が必要なのは面倒臭い。

824 名前:デフォルトの名無しさん [2008/02/03(日) 12:57:16 ]
複数のソースで使うヘッダファイルの変数や関数が、
多重に宣言されないように、externの宣言がありますが、
ヘッダファイルに↓みたいな多重インクルードガードをつけたときも、
externは必要なのでしょうか?

#ifndef AAA_H
#define AAA_H
//ヘッダの内容
#endif

825 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:01:13 ]
extern はリンク時の多重宣言を回避するための物。
インクルードガードはコンパイル時の多重宣言を回避するための物。
全く別の物。

826 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:26:37 ]
>>824
必要。


827 名前:824 mailto:sage [2008/02/03(日) 13:32:45 ]
>>825
>>826
ありがとうございます。

今は、複数ソースで共有する変数/関数にはextern、
全ヘッダにとりあえずインクルードガードをつけてます。

違いがよくわからず、不安なんですが、
こんなんでいいのでしょうか?

ちなみに、関数の方はexternをつけなくても動きました。

828 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:42:54 ]
関数はデフォルトでextern



829 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:45:22 ]
コンパイルとリンクの違いを調べるといいよ

830 名前:デフォルトの名無しさん [2008/02/03(日) 13:51:38 ]
c++で、int [] hoge(適当な引数)
みたいに、配列を返す関数って定義できますか?
上記はできなかったので、結局int []を持つstructを定義して、それを返すように
したのですが、、






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

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

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