aris-wiz の回答履歴
- C言語のvoid型ポインタ変数について。
C言語のvoid型ポインタ変数について。 C言語のvoid型ポインタ変数について質問があります。 組み込み系の開発を行っているのですが、現在使用しているシステムで、 提供されている "API" を介してアプリケーション部のソフト作成を行っています。 この "API" ですが、引数の多くはvoid型ポインタとなっています。 ある人がこの引数がvoid型となっているのを見て、 『なんでvoid型なんや??、C言語でアセンブラと違うんやから、void型なんかにしない方が良い』 とおっしゃいました。 この意味がよくわからなかったのですが、なぜ void型はよろしくないんでしょうか? -- 僕が思うに、APIなんやから引数を void型ポインタ にすることでどんな型にも対応できる 汎用的であると感じ、逆にこの方が良いのではと感じたのですが。。 -API例---- int _exApiKannsuu( char in_data, void* out_data ) "in_data" をもとに "out_data" を取得する。 どーやらこの "out_data" が void型 であるのががよくないらしい・・
- VC2005においてif文が正しく評価されない
環境: WindowsXP SP2 VC2005 下記ソースをデバッグしています(F10によるステップ実行)。 if文の直前で変数aの値を-1など、0未満へ変更し、 そのままステップ実行しても、なぜかif文の中に入りません。 本来であれば、-1は0未満であるため、if文の判定は真と判定 されるべきであると思います。 個人的に「a = b - c」の式が悪さをしているのではないかなと 考えています。 なぜこのような現象が起こるのでしょうか? int main(void) { long a = 0; long b = 2; long c = 1; a = b - c; if( a < 0 ){ return 0; } }
- VC2005においてif文が正しく評価されない
環境: WindowsXP SP2 VC2005 下記ソースをデバッグしています(F10によるステップ実行)。 if文の直前で変数aの値を-1など、0未満へ変更し、 そのままステップ実行しても、なぜかif文の中に入りません。 本来であれば、-1は0未満であるため、if文の判定は真と判定 されるべきであると思います。 個人的に「a = b - c」の式が悪さをしているのではないかなと 考えています。 なぜこのような現象が起こるのでしょうか? int main(void) { long a = 0; long b = 2; long c = 1; a = b - c; if( a < 0 ){ return 0; } }
- VC2005においてif文が正しく評価されない
環境: WindowsXP SP2 VC2005 下記ソースをデバッグしています(F10によるステップ実行)。 if文の直前で変数aの値を-1など、0未満へ変更し、 そのままステップ実行しても、なぜかif文の中に入りません。 本来であれば、-1は0未満であるため、if文の判定は真と判定 されるべきであると思います。 個人的に「a = b - c」の式が悪さをしているのではないかなと 考えています。 なぜこのような現象が起こるのでしょうか? int main(void) { long a = 0; long b = 2; long c = 1; a = b - c; if( a < 0 ){ return 0; } }
- VC2005においてif文が正しく評価されない
環境: WindowsXP SP2 VC2005 下記ソースをデバッグしています(F10によるステップ実行)。 if文の直前で変数aの値を-1など、0未満へ変更し、 そのままステップ実行しても、なぜかif文の中に入りません。 本来であれば、-1は0未満であるため、if文の判定は真と判定 されるべきであると思います。 個人的に「a = b - c」の式が悪さをしているのではないかなと 考えています。 なぜこのような現象が起こるのでしょうか? int main(void) { long a = 0; long b = 2; long c = 1; a = b - c; if( a < 0 ){ return 0; } }
- ほんの些細なことですが…(マクロ名の意味がわかりません)
次のプログラムは # 演算子の使い方を示しているものです。 #include <stdio.h> #define MKSTRING(str) # str int main(void) { int value; value = 10; printf("%s の値は %d です", MKSTRING(value), value); return 0; } 【質問】 マクロ名の「MKSTRING」についてですが、STRINGは文字列と分かりますが、MKが何を意味するのか分かりません。 質問するまでもない些細なことですが、ご存知の方がいらっしゃれば教えてください。お願いします。 (この質問が不快に思われた方は謝ります。ごめんなさい!)
- 標準出力とファイルに効率的に同じ出力をする方法
C&C++でプログラムしています。 (以下は、できれば、Cの範囲内で行いたいと思います。) 結果の出力を画面とファイル両方に出力しています。 printf("A"); ... printf("Z"); fprintf(fp,"A"); ... fprintf(fp,"Z"); ただし、行数が多い場合には、ほとんど同じプログラムがだぶって書いてあり、画面用50行、ファイル出力用50行で、計100行とプログラム行数も長くなってしまいます。 サブルーチン化するなどの方法で、この2つのルーチンを短く記述することは、できないでしょうか? 例えば、 画面に出力する場合には、 fprintf(fp1,"***"); ファイルに出力する場合には、 fprintf(fp2,"***"); として、どちらに出力するかによってファイル指定子を変更できると良いのですが、可能でしょうか? よろしくお願い致します。
- 標準出力とファイルに効率的に同じ出力をする方法
C&C++でプログラムしています。 (以下は、できれば、Cの範囲内で行いたいと思います。) 結果の出力を画面とファイル両方に出力しています。 printf("A"); ... printf("Z"); fprintf(fp,"A"); ... fprintf(fp,"Z"); ただし、行数が多い場合には、ほとんど同じプログラムがだぶって書いてあり、画面用50行、ファイル出力用50行で、計100行とプログラム行数も長くなってしまいます。 サブルーチン化するなどの方法で、この2つのルーチンを短く記述することは、できないでしょうか? 例えば、 画面に出力する場合には、 fprintf(fp1,"***"); ファイルに出力する場合には、 fprintf(fp2,"***"); として、どちらに出力するかによってファイル指定子を変更できると良いのですが、可能でしょうか? よろしくお願い致します。
- プログラミングは独学で習得できるか。
質問タイトルのとおりなのですが、これから、プログラミングをやってみたいと思っている者です。 C言語やJavaを学びたいと思っているのですが、市販の書籍を 何冊か買ってきて一通りの基本的な事項というのは独習・体得できるものなのでしょうか。 良書を調べたりもしていますが、結構、初心者には熟読しても難しい概念が多いですよね。 応用や発展的な技術はたしかに、長い期間をかけての実際の仕事現場での経験、積み重ねが必要であるとは思いますが、変数、関数、クラス、条件分岐などの基礎的な概念や、文法は理解できるのだろうかと思ったりもしました。 プログラミングをマスターしている方というのは、だいたい本を見て独学でやられてきたのですか。 それとも、よくある大学や、「WAVE」「インディーフォルダ(元アウズ)」「ヒューマンアカデミー」などのスクールに通われて身に付けた方も多いのでしょうか。 私も体験入学などしてきましたが、「わからないところを質問できる」、「お金を払ってまで通うのであるから、なまけたり、挫折しないで学習を持続できる心理的な強制力がある」との利点はあるものの、それ以外での実際の学習内容は、一般の書籍と中身は大して変わらないのかなと思ったのですが。 たしかに自己管理をなかなかできない場合は、学費も大きいけれども、長い目で自分に投資するという観点から見た場合、非常に大きな払うだけの価値があるのかもしれませんが。 学費を払うだけの価値があるのかなと思い、迷っています。 もし、何かしらのアドバイスをいただけたら、ありがたく思います。
- 外部アプリケーションの呼び出し方
現在VC++6.0を使いプログラミングを行っています。 PCの環境はウィンドウズ2000です。 現在アプリケーションを作成しており、メニュー画面にボタンを作りそこから外部のアプリケーションを呼び出し作業したいと考えています。 少し調べたところCreateProcess()を使うことによってできることがわかりました。しかしメモ帳のテキストファイルの呼び出しはですが、現在実際に呼び出したいアプリケーションを呼び出すことがうまくいきません。また呼び出したいアプリケーションは今はディスクトップ上にあります。 またその他何かよい方法があればよかったら教えて頂けないでしょうか? プログラミング初心者なので質問の説明で不十分な点があるかもしれませんがどうぞよろしくお願い致します。
- fopen 中のエラー
fopenでファイルを開いているときに異常終了するなどして、ファイルが開きっぱなしになったりはしないでしょうか? もしその時にはどう対処すればよいでしょうか?
- WINDOWSプログラミングをしている方へ質問
WINDOWSプログラミングしている方へ質問です。 DOSプログラム #include <stdio.h> int main(void) { ・・・・・・・ return 0; } までの文+基本的な関数を覚えているプログラマが大半(ほぼ全員)だと思いますが WINDOWSプログラム #include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); char szClassNme[] = "任意の文字"; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow) { ・・・・・・ return (0L); } までの文+基本的な関数をWINDOWSプログラマは覚えているのでしょうか? それともCの基本的な事が分かるうえで必要に応じて関数や決まり事 を確認(本やサイト等)しながらプログラミングを しているのでしょうか? 両方のの経験者の方、暇な時にでも回答お願いします
- scanfの仕様上の問題
scanf( )ライブラリが仕様上の問題により 業務上のプログラムで使われない理由って 何ですか? またその代わりに何を使えばいいんですか?
- scanfの仕様上の問題
scanf( )ライブラリが仕様上の問題により 業務上のプログラムで使われない理由って 何ですか? またその代わりに何を使えばいいんですか?
- scanfの仕様上の問題
scanf( )ライブラリが仕様上の問題により 業務上のプログラムで使われない理由って 何ですか? またその代わりに何を使えばいいんですか?
- [C言語→アセンブリ言語]はどうするのですか?
C言語でプログラムを作って、それをアセンブリ言語に変換したいのですが、どうしたらよいでしょうか?
- 起動後直に実行するコードはどこに?
初心者です。 VC++6.0でAppWizardを使って単純なダイアログベースのスケルトンが出来ます。 通常はこの中にボタンなどを配置しイベント処理するのですが イベントではなくプログラムが起動しフォームが表示されたら直ちに実行させる様なコードはどこの位置から書き込めば良いのでしょうか。 たとえばタイマーをスタートさせデジタル時計を1秒毎に連続で表示させる様な事をしたいのですが今一書き込む位置がわかりません。 よろしくお願いします。
- 起動後直に実行するコードはどこに?
初心者です。 VC++6.0でAppWizardを使って単純なダイアログベースのスケルトンが出来ます。 通常はこの中にボタンなどを配置しイベント処理するのですが イベントではなくプログラムが起動しフォームが表示されたら直ちに実行させる様なコードはどこの位置から書き込めば良いのでしょうか。 たとえばタイマーをスタートさせデジタル時計を1秒毎に連続で表示させる様な事をしたいのですが今一書き込む位置がわかりません。 よろしくお願いします。