トップページ⇒tech
1001コメント330KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/09/17(水) 15:41:48
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
スレを勃てるまでもないC/C++の質問はここで
http://pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
http://pc11.2ch.net/test/read.cgi/tech/1187521676/
0302デフォルトの名無しさん2008/11/17(月) 23:05:02
>>301
x->b はつまり ()
0303デフォルトの名無しさん2008/11/17(月) 23:05:42
x->b は (*x).b
03042802008/11/17(月) 23:09:02
>>295
本当にありがとう。
ActiveXが下火ってことは、別の技術で同じことが実現できるようになったからなんでしょうか。
その本なら見かけたことあるんで、買ってきます。
0305デフォルトの名無しさん2008/11/18(火) 00:26:05
>>304
オープンなインターネットにおいて、Windows/IE限定の技術だったし、
セキュリティもあまりよくない状況にしやすいというのがダメだった。

後継の決定打はない。
Webブラウザで動かすならAjax、Flash、Silverlightのようにローカルリソースを諦めるか、
ローカルリソースを使いたいならClickOnceなんかのように
アプリケーションをインストールさせるという方向に分かれている感じだと自分は思っている。
0306デフォルトの名無しさん2008/11/18(火) 23:59:08
Tidy使ってHTML->XHTML変換したいんだがやり方が全然わかんね
utf8な文字列を投げてコンソールに出力したときに日本語部分が全部????になる
tidyOptSetValue(tdoc, TidyOutCharEncoding, "shiftjis");やらやってみたけど全然だめ
誰か助けてくれ

ttp://tidy.sourceforge.net/docs/api/
ドキュメントわからなさすぎ 関数名書いてあるだけとか泣いちゃうから
0307デフォルトの名無しさん2008/11/20(木) 05:56:28
変数xのlogを返したいのですがどう書けばいいのでしょうか?
(log xやln xを得たい)
0308デフォルトの名無しさん2008/11/20(木) 08:50:26
>>307
Cならlog()またはlog10()。
0309デフォルトの名無しさん2008/11/20(木) 17:32:09
あまりに的外れなこと聞いてたらすみません
Cの入門書って黙って書いておけ的な感じで#include <stdio.h>の一文がありますよね
同様にC++の入門書では#include <iostream>とありました
しかしVC++を使ってる限りCにC++の文、C++にCの文を書いても互換性があったり混同しても問題なかったりしているのですが
少しでも混同する場合は↑のお約束文?は2つとも書いておくべきなのでしょうか?それとも片方でよいのでしょうか?
0310デフォルトの名無しさん2008/11/20(木) 17:53:08
使うものは書く必要がある
使わないものは別に書いても書かなくても構わないが、まぁ無駄なだけだ
printf, scanf 等は <stdio.h>
cout 等は <iostream>
使いたい関数のリファレンスマニュアルを見れば、必要なヘッダファイルが書いてある
0311デフォルトの名無しさん2008/11/20(木) 18:01:49
CにC++の文を書いたりCでC++のヘッダファイルを使うことはできないよ
VC++のデフォルトのプロジェクト設定では拡張子を .c にしてもC++としてコンパイルされるから
問題ないように見えてしまうかもしれないが
0312デフォルトの名無しさん2008/11/20(木) 21:28:21
__FUNCTION__ って VC++ だけ?
gcc でもつかえる?
0313デフォルトの名無しさん2008/11/20(木) 21:55:03
質問です

while (true)
{
if(a = b)
{
//何かの処理A
continue;
}
//何かの処理B
}
この場合、a=bだとすると処理Aが行われますが、その後の処理Bは行われますか?
0314デフォルトの名無しさん2008/11/20(木) 22:01:44
どっちも試せば一発でわかることなのに。。。

>>312
使える

>>313
実行されない
というか、そのための continue
0315デフォルトの名無しさん2008/11/20(木) 22:32:56
>313
そのコードだと、まず a に b が代入され
b が真なら処理Aが実行される。

もし = が == なら、a と b が等しいとき処理Aが実行される。

どちらにしろ、処理Aが実行されたら
continueでループ内のそれ以下の処理は飛ばされ
処理Bは行われない。
0316デフォルトの名無しさん2008/11/20(木) 22:53:17
>309
#include プログラム内でどんな機能を使うかを示すもの。
(もっと正確に言えばプリプロセサへの指示)

例えばC言語の printf scanf などは stdio に
C++の std::cout std::endl などは iostream に所属してる。

もっと色んな機能を使いたければ沢山 #include を書くことになる。
但しコンパイルは重くなるし、変数名も関数名も大量になって
好きな名前を付けにくくなる。

「お約束」と言われるのはよく使われる機能が詰まってるから。
stdio も iostream も無しでウィンドウ制御やグラフィックス機能だけincludeしたり
プラグインやライブラリなどはそれすら要らないこともある。


ちなみにC++は少し前のC言語を拡張して作られた言語。
なのでC言語のコードはC++コンパイラでもコンパイルできる事が多いけど
逆にC++のコードはC言語のコンパイラではコンパイル出来ないのが普通
0317デフォルトの名無しさん2008/11/20(木) 23:31:17
>ちなみにC++は少し前のC言語を拡張して作られた言語。
>なのでC言語のコードはC++コンパイラでもコンパイルできる事が多いけど
よく判っていないのなら書かなければいいのに。
0318デフォルトの名無しさん2008/11/21(金) 00:41:12
拡張の過程で仕様変更もあったけど
そんなの気にしてるとハゲるぞ。
0319デフォルトの名無しさん2008/11/21(金) 00:43:06
それよりiostreamとstdio.hはそのままじゃ併用しちゃだめなこと教えてやれよ
0320デフォルトの名無しさん2008/11/21(金) 00:44:22
int main()でいいとか//コメントが堂々と使えるとか、
むしろはげない方向にいい影響がもたらされると思う。
0321デフォルトの名無しさん2008/11/21(金) 11:21:56
>>312
gcc にも __FUNCTION__ あるよ
__PRETTY_FUNCTION__ とか __func__ もあるよ
0322デフォルトの名無しさん2008/11/21(金) 16:46:33
>>319
どうすればOKなの?
0323デフォルトの名無しさん2008/11/21(金) 16:50:22
struct Hoge{
double data;
char *m_name;

}
という構造体があります。

int main(){

Hoge hoge[10];

char *name[5]={"A","B","C","D","E"};



for(int i=0;i<5;i++){

hoge[i].m_name = name[i];

}



}

このプログラムってどういう動作ですか?
特に hoge[i].m_name = name[i];この部分です。 構造体のメンバーであるchar型のポインタに main内で宣言した文字列へのポインタを
わたしてるだけでしょうか?
0324デフォルトの名無しさん2008/11/21(金) 16:54:07
そうです
0325デフォルトの名無しさん2008/11/21(金) 17:02:24
stringr name[5]={"A","B","C","D","E"};


char test[10];

strcpy( test, name[i].c_str() );

これは実体のコピーですか?

そもそもstringr name[5]={"A","B","C","D","E"};

この宣言はどういう意味ですか?
0326デフォルトの名無しさん2008/11/21(金) 17:05:29
stringrはstringの間違いです
0327デフォルトの名無しさん2008/11/21(金) 17:19:19
>>325
そうです
string5個の配列で、各stringはconst char*引数を取るコンストラクタに "A" などを渡して初期化する、ということです
0328デフォルトの名無しさん2008/11/21(金) 17:33:10
>>327
つまり文字数+nullのchar型の配列5個宣言するみたいな感じですか?

0329デフォルトの名無しさん2008/11/21(金) 17:42:19
いいえ、まったく
stringクラスはもっとずっと複雑な動作をします
0330デフォルトの名無しさん2008/11/22(土) 00:40:25
ある意味糖衣構文の塊みたいな宣言だな。
0331デフォルトの名無しさん2008/11/22(土) 02:33:09
実装が気になるならソースをみるんだ
basic_string<>を
0332デフォルトの名無しさん2008/11/23(日) 01:30:03
VisualStudio2005proで開発中です。

USBのシリアルキーを読むプログラムを作成したのですが、
ビルド>実行ではデバッグビルド、リリースビルド共に問題ありません。
しかし、ビルドしたあとに生成されたプログラム(○○.exe)を実行すると
共に正しく動作しません(シリアル番号が読み取れない)。
○○.exeを右クリック>別のユーザーで実行する>管理者権限
でやっても同様の結果になります。

なにかしら解決へ向けてのヒント等いただければと考えています。
0333デフォルトの名無しさん2008/11/23(日) 11:27:02
>332
カレントディレクトリの違いにより DLL や依存ファイルの読み込みに失敗しているとか。
0334デフォルトの名無しさん2008/11/23(日) 12:32:49
>>333
レスありがとうございます。

DLLが読みこみに失敗した場合はOSによるエラーが出現すると考えていますが、
どうでしょうか?
依存ファイルは#pragma commentによるlib、設定した追加インクルード系くらいしかありません。

現在、fwprintfでテキストアウトしながら、挙動を調べています。

0335デフォルトの名無しさん2008/11/23(日) 22:21:01
どうやって読み込んでるのかわからんけど
GetLastError()は何か返してないの
03363322008/11/24(月) 12:57:22
>>335
レスありがとうございます。
GetLastErrorを使いながら、原因を探り無事問題解決しました。
肝となる変数がとなる関数内部のローカルなアドレス値を参照しており、
それを関数外で参照してしまいこのような原因を引き起こしておりました。
初歩的なミスをしておりました。
スレ汚し申し訳ありませんでした。
100年ROMります。
0337デフォルトの名無しさん2008/11/24(月) 15:30:25
超初心者な質問で恐縮ですが、
デフォルトコンストラクタに初期化リストを書いて宣言した場合、
引数付きコンストラクタでもその初期化はなされるのでしょうか?
それとも同じ初期化リストを書かなければならないのでしょうか?
0338デフォルトの名無しさん2008/11/24(月) 20:05:52
書かなければいけない。
0339デフォルトの名無しさん2008/11/24(月) 21:14:15
C言語の配列・文字列で質問があります。
入力した文字を逆から出力するプログラムを作っているのですが
どうも上手くいきません。

char str[4];

str[0] = `a`;
str[1] = `b`;
str[2] = `c`;
str[3] = `\0`;

とあり、逆から表示したい場合、
str[3]から出力していけば良いと思っているのですが、
ループを設定しても何も出力されませんでした。
ググってもポインタ等を使うやり方が多くて見当もつきません。
いったい、どうやれば出力されるのでしょうか?
0340デフォルトの名無しさん2008/11/24(月) 21:28:31
>>339
            __, --──−、_
           /::_, -‐─ ‐-、_::::`‐-、
.           /::/        `‐i:::::::ヽ
           |:./           ',ミ::::::}
           }:l             lミ::::::l'
         _!,'_ ,..-- ..、   __ !::::::::|
        lヽ! `i ィェッ、.i'゙"i';;;ィェッ;,`i===,、
         ',.l  ゙、゙゙゙゙゙,ノ  ヽ_"゙゙ ゙/ r;;;;;;/
          i|    ̄,'  ::::ヽ `''" .,{;;;;;;/
           ',.    ゙`-"゛''   ,};;;;;;'
          !   ,_、,___,  /;;;/"
         _,` 、       /;;r'
   _,, -─ '';;;;;;;;;| 、ヽ,,____,,-‐';;;;;;;;;;;\_
   ;;;;;;;;;;;;;;;;;;;;;;;;;;|  \    _//;;;;;;;;;;;;;;;`ヽ、
   ;;;;;;;;;;;;;;;;;;;;;;;;;;|   r‐ィt- '" /;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;;;;;;;;;;;;;;;;;;;;;;;;;;|  /,彡彡}  ,!;;;;;;;;;;;;;;;;;;;;;;;;;;;;

      ツレマスカ [Vladimir Tzlemazka]
        (1915-1997 ロシア)
0341デフォルトの名無しさん2008/11/24(月) 21:32:18
>>339
int i=4;

while(i--){
printf("%c", str[i]);
}
0342デフォルトの名無しさん2008/11/24(月) 22:29:05
str[0] = 'a';
str[1] = 'b';
str[2] = 'c';
str[3] = '\0';
の逆は
str[0] = 'c';
str[1] = 'b';
str[2] = 'a';
str[3] = '\0';
ではないだろうか
0343デフォルトの名無しさん2008/11/25(火) 00:25:46
.Netで開発したアプリケーションからWin32のDllをLoadLibrary関数で呼び出して
そのDLLからダイアログを表示させようとしています。

// グローバル変数でCDialogから派生したクラス
CCertifier *crtDlg;
// 以下2行。どこかの関数内部
crtDlg= new CCertifier;
crtDlg->DoModal();

のコードでDoModalを呼び出したところで"Debug Assertation Failed!"のダイアログが出て来ます。
出来ればモーダルウィンドウの方で表示させたいのですが、そちらの方のコードでも同じ症状が出ています。
何方か原因を分かる方などいらっしゃらないでしょうか?
一応環境はWinXP、開発環境はVS2005です。
0344デフォルトの名無しさん2008/11/25(火) 00:33:44
ダイアログテンプレートを指定してないとか
0345デフォルトの名無しさん2008/11/25(火) 00:58:58
DLLとして呼び出す関数内のstatic変数は、DLLをアンロードしたときに削除されるのですか?
そして再びDLLをロードした後で関数を呼び出すと、再度作られるのですか?
0346デフォルトの名無しさん2008/11/25(火) 09:07:47
その関数内でDLLを呼び出すかどうかによって、関数内でstatic宣言した
変数の扱いが変わると思うその理由とは? C言語からおさらいしてこい。
03473432008/11/25(火) 11:03:45
どうも、ご回答ありがとうございます

えっと、CCertifierクラスは
「リソースの追加」でダイアログ追加→「クラスの追加」→以下作成ウィザードで作成
で作成したものなので、ダイアログテンプレート等の基本的な所は全自動のはずです
0348>>3452008/11/25(火) 12:18:33
ありがとうございます。
DLLのロードを行う関数ではなくて、DLLモジュール内の関数という意味でお願いします。
0349デフォルトの名無しさん2008/11/25(火) 12:23:03
>>348
>346
0350>>3452008/11/25(火) 12:29:01
モジュール破棄時にstatic変数も破棄という理解であってる、ということでしょうか。
0351デフォルトの名無しさん2008/11/25(火) 12:40:36
>>350
破棄されないと使えるメモリがどんどん少なくなるよ
0352デフォルトの名無しさん2008/11/25(火) 17:09:36
基本的なことを質問させてください。
newで確保した変数はdeleteで開放する必要がありますが、普通の変数や配列は自動的に開放されるのですか?
0353デフォルトの名無しさん2008/11/25(火) 17:12:31
はい、そうです
0354デフォルトの名無しさん2008/11/25(火) 17:26:53
どーもありがとです
0355デフォルトの名無しさん2008/11/26(水) 00:15:24
C++の初心者向けの本でオススメの本があったら教えて下さい。
0356デフォルトの名無しさん2008/11/26(水) 00:52:04
はい、そうです
0357デフォルトの名無しさん2008/11/26(水) 02:01:44
どーもありがとです
0358デフォルトの名無しさん2008/11/26(水) 12:15:51
初歩的な質問なのですが、
みなさん童貞ですか?
0359デフォルトの名無しさん2008/11/26(水) 12:58:01
はい、そうです
0360デフォルトの名無しさん2008/11/26(水) 13:56:36
どどどど
0361デフォルトの名無しさん2008/11/26(水) 18:26:23
初歩的な質問なのですが、クラス内の関数にvirtualがついていた場合、
その関数は実行することは出来ないという理解で良いでしょうか?
0362デフォルトの名無しさん2008/11/26(水) 18:36:25
全然違う。
継承を勉強してないうちは気にしないでいい。
0363デフォルトの名無しさん2008/11/26(水) 18:45:50
>>362
仮想関数で、サブクラスに実装を任せた云わば雛形的な役割だと思っていたのですが・・・
実行はできるのでしょうか?
というのも、いま読んでいるコードでは親クラスでvirtual関数で定義し、継承したクラスでもvirtualを付けているにも関わらず内部を実装しているので、virtualが付いていても実行できるのかと思いました。

長文で初歩的な質問失礼しました。
0364デフォルトの名無しさん2008/11/26(水) 18:51:54
そりゃどっちのクラスでインスタンスを作ったかによるだろう。
>サブクラスに実装を任せた
ってのは = 0 をつけた純粋仮想関数のことじゃないかな。
0365デフォルトの名無しさん2008/11/26(水) 19:03:01
それと、基底クラスの同シグネチャの関数にvirtualが付いていれば、派生クラスの関数も仮想関数になる。
派生クラスで、オーバーライドする関数にvirtualを付けるのは、それを読む人間相手の目印でしかない。
0366デフォルトの名無しさん2008/11/26(水) 19:03:05
インスタンスは
new 子クラス名
となっているので継承した側だと思います。
他にこの仮想関数をオーバーロードしているところもないので、このvirtual付き関数を呼び出しているようにしか見えないのですが…
0367デフォルトの名無しさん2008/11/26(水) 20:21:49
>>366
真面目に勉強する気が無いなら人間やめとけ。答はちゃんと書かれている。
0368デフォルトの名無しさん2008/11/26(水) 21:43:02
>>361
簡潔に言うと、
ふつうのメンバ関数はコンパイル時に静的にバインドされるが、
仮装関数は実行時に動的にバインドされる
0369デフォルトの名無しさん2008/11/26(水) 21:54:54
printfで表示させるときに
, を表示させようとするとなんか上手く表示されません
カンマを表示するにはどうすればいいんですか?
0370デフォルトの名無しさん2008/11/26(水) 22:29:35
>>369
そうやって質問するってことは、

printf(",");

じゃダメなんだろうな。何がしたいのかわからんから答えようがない
0371デフォルトの名無しさん2008/11/26(水) 23:11:14
>>369
1000の位のカンマなら、SUSv2独自だから他の環境では大抵巧くいかない。
0372デフォルトの名無しさん2008/11/27(木) 18:33:45
>>371 のエスパーに感動した
0373デフォルトの名無しさん2008/11/27(木) 21:15:58
はじめて質問します。
FreeBSD+GCC 3.xをつかっているのですが、

#define BUF_LEN 1024
char buffer[BUF_LEN];
FILE *tokenlist;
のときに、

fgets(buffer, BUF_LEN, tokenlist);
を実行すると、セグメンテーションエラーがおこることがあります。
しかしいくら原因を考えてもわかりません。
そもそもfgetsはセグメンテーションエラーがおこらないようつくられた関数ときいていたので困惑しています。
ほかの環境(Linux+GCC4、Cygwin+GCC4)では問題なく動くため、BSD特有の現象なのでしょうか?
ご教示お願いします。
0374デフォルトの名無しさん2008/11/27(木) 21:42:45
tokenlist にはなにを入れてるの?標準入力?w
03753732008/11/27(木) 21:45:58
>>374
テキストファイルです。1行ずつ読もうとしてこのように書きました。
0376デフォルトの名無しさん2008/11/27(木) 22:04:26
:問題
リリースビルドしたExeファイルを開発環境で実行する分には正常動作。
他のPCで実行すると下記エラーが出る。
Microsoft Visual C++ Runtime Library
[Runtime Error!]
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
:開発環境
VisualStudio2005Pro+WindowsDriverKit6001.18001
:問題起こしそうなヘッダ、ライブラリ
追加インクルードパス>WINDDK\6001.18001\inc\api
winmm.lib shlwapi.lib
usbiodef.h usbioctl.h atlcoll.h setupapi.h 
winioctl.h cfgmgr32.h atlstr.h
:試したこと
DirectX9.0bインストール
Microsoft Visual C++ 2005 再頒布可能パッケージ (x86)インストール
0377デフォルトの名無しさん2008/11/27(木) 22:40:45
>>375
再現可能な最低限のコードを貼ってくれ。
その断片だけ見ても何とも言えない。
03783732008/11/27(木) 22:57:18
>>377
わかりました。
次のようにmain関数でtokenlistにファイルを関連づけます。
tokenlistはグローバル変数です。
int main(int argc, char **argv)
{
    (略)
    tokenlist = fopen(argv[1], "r");
    (略)
   
    getToken();
    (略)
}
getToken関数でfgetsを行います。
void getToken() {
    char buffer[BUF_LEN]; /* バッファ */
    (略)
    fgets(buffer, BUF_LEN, tokenlist);
    (略)
}
このgetToken関数は、その他の関数でtokenlistの次の行の情報が必要になるたびに呼ばれます。
よろしくお願いします。
0379デフォルトの名無しさん2008/11/27(木) 23:01:48
>>378
にほんごわかりますか?

恐らくどっかでtokenlistを壊しているのだろうよ。
再現する最低限のソースを作る過程で見つかることもしばしばだから
やれと書いているのにそれすらできないんじゃ望み薄だが。
0380初心者2008/11/27(木) 23:13:54
C++初心者です。
現在、独習C++で勉強しています。
中級者向けの本、お勧めの本などありましたら
教えていただければ幸いです。
0381デフォルトの名無しさん2008/11/27(木) 23:15:27
中級者向けの定番は Effective C++
0382デフォルトの名無しさん2008/11/27(木) 23:17:25
>>380
http://pc11.2ch.net/test/read.cgi/tech/1227705211/56
03833732008/11/27(木) 23:34:00
>>379
ソースが非常に巨大なためその点はご迷惑をおかけしました。
とりあえずtokenlistをあまり長期間保持しないように変えました。
ご教示ありがとうございました。
0384デフォルトの名無しさん2008/11/28(金) 02:47:13
中級者向けの本って中級者が読むんだよね。
何で初心者が?
03853762008/11/28(金) 12:36:14
>>355
Dr.JamsaのC++超入門
自分はこれが一番しっくり来たっす。
>>380
C++標準ライブラリの使い方完全ガイド。
STLは中級者レベル?(初心者レベルだったらスマソ)

>>376なんですが、他で質問した方がいいですかね?

0386デフォルトの名無しさん2008/11/28(金) 12:42:38
>>385
状況を細かく噛み砕いてDirectXスレ辺りへどうぞ。
03873762008/11/28(金) 12:48:20
>>386
レスありがとうございます。
確かに質問内容がだめでした。
もう少し、”○○を使うと他でエラーが出る”くらいまでやるべきでした。
エラーをもう少し特定して他スレ行ってきます。
0388デフォルトの名無しさん2008/11/28(金) 13:29:16
ランタイムだろうしな
0389デフォルトの名無しさん2008/11/28(金) 14:52:04
キー入力を求めてる間にも時刻を表示したりすることってできるでしょうか?
0390デフォルトの名無しさん2008/11/28(金) 14:55:25
>>389
できる環境もあればできない環境もあります。
0391デフォルトの名無しさん2008/11/28(金) 15:00:38
>>390
できる環境の場合のやり方を教えてください。
0392デフォルトの名無しさん2008/11/28(金) 15:11:13
>>391
できる環境の場合、そうなるようにやります。
その方法は、大抵の場合複数あります。
0393デフォルトの名無しさん2008/11/28(金) 16:17:46
>>392
getcharの実行中はプログラムは止まったままだと思いますが
どうやってやるのでしょう?
0394デフォルトの名無しさん2008/11/28(金) 16:25:29
getchar使わなきゃいいだろ。
ゲームとかキー入力うけつけながら残り時間表示とかしてるだろ?
0395デフォルトの名無しさん2008/11/28(金) 16:25:51
>>393
スレッド作成して別スレッドで時計表示
0396デフォルトの名無しさん2008/11/28(金) 17:02:26
>>391
Windowsなら
メッセージ処理する
Directinput使う
conio.h使う
など
0397デフォルトの名無しさん2008/11/28(金) 18:09:55
>>395
ありがとうございます。大体分かりました。ところで、下のプログラムを実行すると
main関数のgetchar以降が実行されないみたいなんですがどうしてなんでしょう?
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
void thread(void);
int main(void) {
int handle;
pthread_t id;
int c;
handle = pthread_create(&id, NULL, (void *(*)(void*)) thread, NULL);
while(1) {
printf("Main\n");
c = getchar();
printf("Main %d\n", c);
usleep(500*1000);
}
}
void thread(void)
{
usleep(500*1000);
while(1) {
printf("Thread %d\n", (unsigned) time(NULL));
usleep(1000*1000);
}
}
0398デフォルトの名無しさん2008/11/28(金) 18:28:12
>>397
なんで自分の環境を書かないの?
>397でUnix系と言うことは判ったけど。
で、getchar()で止まっているスレッドよりもusleep()で止まっているスレッドが優先されているだけじゃないのかね。
少なくとも私の環境(cygwin)では巧くいくようだよ。
0399デフォルトの名無しさん2008/11/28(金) 18:30:48
>>398
ありがとうございました。解決しました。
0400デフォルトの名無しさん2008/11/28(金) 21:06:47
なんていうか、かなり変な質問かと思うんですが……。
if文を利用する価値ってどんなもんですか?

リアルタイムで変化しうる1万個のフラグがあって、1/60秒ごとに全てのフラグをチェックする必要があるが、if文ひとつでチェックすべきフラグが9千個ほどにまで削減できるとしたら。
if文を入れても入れなくても処理速度は変化しないとすれば、このif文に価値ってありますか?
0401デフォルトの名無しさん2008/11/28(金) 21:13:06
処理的に入れなければならないifなのであれば、処理速度を問わず、それは存在しなければならない。
最初コストの話かと思ったんだが、そういう風にも見えないのでもう少し説明が欲しい
0402デフォルトの名無しさん2008/11/28(金) 21:14:24
if文一つ入れることで1割のフラグチェック処理を枝刈りできるのなら割と有意義に思えるけどな
■ このスレッドは過去ログ倉庫に格納されています