hi-mi-tsu の回答履歴
- バイナリファイルから文字列を検索するコマンド
C++言語で書かれたプログラムの実行ファイルが50個ほど あり(それぞれ50MB程度)、ある関数を修正した場合に どの実行ファイルに影響があるか調べたいのですが、 ソースコードを追って依存関係を調べるのは現実的ではないため 実行ファイルの中にその関数名が含まれるかどうかで 判断しようと思っております。 ためしにFTPでパソコン上に転送して、バイナリエディタで表示し 使用している関数名が文字列として含まれていることは 確認できましたが、毎回全ファイルをFTP転送するのは避けたいので、 同様の調査をUNIXマシン上で行いたいのですが、 バイナリファイルから文字列を検索するコマンドは ありますでしょうか? OSは SUN OS5.8です。 宜しくお願いします。
- バイナリファイルから文字列を検索するコマンド
C++言語で書かれたプログラムの実行ファイルが50個ほど あり(それぞれ50MB程度)、ある関数を修正した場合に どの実行ファイルに影響があるか調べたいのですが、 ソースコードを追って依存関係を調べるのは現実的ではないため 実行ファイルの中にその関数名が含まれるかどうかで 判断しようと思っております。 ためしにFTPでパソコン上に転送して、バイナリエディタで表示し 使用している関数名が文字列として含まれていることは 確認できましたが、毎回全ファイルをFTP転送するのは避けたいので、 同様の調査をUNIXマシン上で行いたいのですが、 バイナリファイルから文字列を検索するコマンドは ありますでしょうか? OSは SUN OS5.8です。 宜しくお願いします。
- C言語 関数の戻り値と自動変数
かなり基礎的な質問になるのですが、疑問に思うことがあり、質問をさせていただきます。 関数内で宣言した変数を戻り値として使う場合ですが、ポインタなどではなく実体の場合でも、静的変数として宣言をしたほうが良いのでしょうか? 現実的に考えると、プログラムが関数から出て、呼び出した側の関数が戻り値を受け取るまでの瞬間に、その領域が書き換えられる可能性は極めて低いと思うのですけど、C言語の仕様としてはどうなのでしょうか? 関数内で宣言した戻り値に使う変数には、必ずstaticをつけた方が良いのでしょうか? もしおわかりでしたら教えて下さい。
- ベストアンサー
- C・C++・C#
- tadasuke2002
- 回答数8
- RPGでのダメージの算出方法について
詳しい方がいそうなのでここでお願いします。 RPGゲームでダメージを計算する時に、そのまんま(味方の攻撃力-敵の防御力)じゃなくて ある程度ランダムにダメージに幅を持たせたいのですが、 その幅のよく使われている計算方法などはあるのでしょうか? 例: ダメージ = ベースダメージ(味方の攻撃力-敵の防御力) +-ある程度の幅 自分なりに考えてみたのですが、どうもしっくりこないんです。 たとえばダメージが1000ほどある場合に、この条件式をだらだら書いていくのは 違うと思いますし、何か基準となるアルゴリズムなどはあるのでしょうか? int haba(int base_damage) { int haba = 0; if(2 <= base_damage && base_damage < 10) haba = rand((base_damage/2+1)); else if(10 <= base_damage && base_damage < 20) haba = rand((base_damage/3)); else if(20 <= base_damage && base_damage < 50) haba = rand((base_damage/4)); else if(50 <= base_damage && base_damage < 100) haba = rand((base_damage/5)); else if(100 <= base_damage) haba = rand((base_damage/6)); if(rand(2) == 0) haba *= -1; return haba; } damage = (base_damage+haba(base_damage));
- ベストアンサー
- C・C++・C#
- takagoo100
- 回答数6
- 静的変数の大量な要素を初期化したい
言語:c OS:Windows XP 処理系:Borland C++ Compiler 5.5 静的変数の大量な要素を-1で初期化したいのですが、 どのようにかけばよいでしょうか。 static int a[1000] = {-1, -1, /* ←これをたくさんかくしかないでしょうか */
- 文字列の宣言(ポインタと配列)
Cでソケット通信などはできるくらい(もちろんできると言っても私のレベルで) になりましたが、文字列を宣言する際に char *str = "ahaha'; char str[] = "ahaha"; の2種類の違いが今イチしっくりきません。 いろんな参考書でこれの説明はありましたが、でも結局なんなんだ、という感じです。 ポインタで宣言するべき時、配列で宣言するべきときが判断できません。 またポインタで宣言するとエラーが出るけど試し配列で宣言してみたら なんか知らんが動いた、ということも多々ありましたが理由がよくわからなかったです。 よろしくお願いいたします。
- 文字列の宣言(ポインタと配列)
Cでソケット通信などはできるくらい(もちろんできると言っても私のレベルで) になりましたが、文字列を宣言する際に char *str = "ahaha'; char str[] = "ahaha"; の2種類の違いが今イチしっくりきません。 いろんな参考書でこれの説明はありましたが、でも結局なんなんだ、という感じです。 ポインタで宣言するべき時、配列で宣言するべきときが判断できません。 またポインタで宣言するとエラーが出るけど試し配列で宣言してみたら なんか知らんが動いた、ということも多々ありましたが理由がよくわからなかったです。 よろしくお願いいたします。
- arm-linux-gdbをMeadowで使う方法ありますか?
Cを書くのに、GDB + Meadowを使い始めました。 今回、arm-linux-gccで、組込み用のプログラムをクロスコンパイルしています。そこで、M-x gdbのような感じで、arm-linux-gdbをMeadow上で使うことはできますでしょうか?(例えば、M-x arm-linux-gdb みたいな)やり方、もしくは、参考になるサイトがあればお教えください。 ちなみに、現段階では、gdbserverをターゲットに置いて、arm-linux-gdbをCygwin上から直接起動してデバッグすることには成功しております。Cygwin暦はそれなりにあるのですが、emacs関連の知識は最近始めたばかりで、ほぼ初心者レベルです。よろしくお願いいたします。
- gdbで無名名前空間の関数にブレイクポイント
Windows+cygwin+emacsでc++のプログラムを勉強しています。デバッガとしてemacs上でgdbを使っているのですが、無名の名前空間にある関数にブレイクポイントを設定する方法がわかりません。例えば、 namespace { void foo() { ... } } int main(void) { foo(); } のようなfoo.cppファイルをコンパイルしてfoo.exeファイルを作り、それをgdbによりデバッグするとします。そこで、gdb上で b main とすると、mainに入ったところにブレイクポイントが設定されますが、 b foo としても、Function "foo" not defined.と表示されてブレイクポイントが設定されません。無名の名前空間にある関数にはどのように入力してブレイクポイントを設定するのでしょうか。とりあえず、今は行番号によりブレイクポイントを設定しています。ご存じの方がいらっしゃいましたら、ご教授ください。お願いします。
- asアセンブラに関しまして
movl $(__KERNEL_CS << 16),%eax movw %ax,%dx 上記のソースに関しまして、32bit レジスタ %eax に格納した値を次の行で、 16bit レジスタ%dx に代入していますが。 この時、%ax の指している16ビットの範囲は、%eax の下位16bit になるのでしょうか?
- 締切済み
- その他(プログラミング・開発)
- damedamekun
- 回答数2