- ベストアンサー
C言語系統に#(0){ コード } という機能
パワードール4というレトロゲームを購入しました。 ディスクにソース(.C)らしきファイルが入っており読んでみるとどうも各ステージなどで使う処理やエラーメッセージや会話を定数ではなくハードコーディング(ある程度?)しているようです。 各ステージごとに.cファイルを作っているようです。(メンテナンス性はよくなくとも、ステージが量より質、少人数開発とかだとこういう作り方も良いかも) それで本題ですがC言語系統に #(0){ コード } #(1010){ コード } #(2000){ コード } というようにソース内を#で区切るような機能はあるのでしょうか? ※これらは.cファイルのなかにいくつも入っています。#(2000){などの中の部分は処理が入っています。 私は発見できなかったので特定の環境ローカルなものですか? C系統ですと処理の単位は関数かクラスメソッドになり例えば func_rect(){ } のようなものになるのではないでしょうか? #()という記載が分からなかったので最初はgotoかなにかか、それともこのファイルはビルドして処理を行っているのではなく実行ファイルが読み込んで解釈をする定数か?と思ってしまいました。
- C・C++・C#
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
プリプロセッサですね。
関連するQ&A
- C言語における定数の使用方法
こんにちは。 今日質問したいのは、タイトルにありますように、C言語における「定数」の使い方についてです。 私は現在、Visual C++を用いてC言語のプログラミングを勉強しているのですが、条件文(if文)に定数を用いてコーディングを行おうとしても、どうしてもエラー表示が出て、うまくコンパイルすることができません。 具体的には、 if(No>=1 && No<=10){ //具体的な処理部分 } というif文を、予めヘッダファイル内にて定義した定数 #define start 1; #define stop 10; を用いて次のように、 if(No>=start && No<=stop){ //具体的な処理部分 } コーディングしたいと考えています。 しかし、これをコンパイルするとエラーが発生してしまいどうにもうまくいきません。 また、定数ではなく数字で記述するとうまく回ります。 別のところで定数を、 wk = start; のように代入で使用しているのですが、そこではなにも問題がありません。 いったい何が間違っているのか、どのようにすればうまくいくのかを教えていただきたいと考え、書き込ませていただきました。 皆様、どうぞよろしくお願いします。
- ベストアンサー
- C・C++・C#
- extern指定子と実装(#include)について
2点質問があります。 #1.#includeできるのはヘッダーファイルのみなのでしょうか。 ヘッダファイルをインクルードしなくてはいけないのは、わかっ てます。.c(Cソースコード)はインクルードできないのでしょう か。 #2.#1と絡んだことについてです。 たとえば、2つの関数Func1()とFunc2()とをメインルーチンと は別のソースコードに関数の処理を記述したとします。 ファイル名:Func.c 中身:Func1とFunc2の処理内容 次にこれをメインルーチン内で使用するために以下のように記述 して保存したとします。 ファイル名:Func.h 中身:#include "Func.c" extern void Func1(void); extern void Func2(void); 最終的に、ファイル名:main.c #include "Func.h" --------------- Func1(); Func2(); というようなことは可能でしょうか。
- ベストアンサー
- C・C++・C#
- C言語で再帰的処理が出来ない理由
以下のサイトでC言語の勉強をしているのですが、このサイトのソースコードをコピペして実行してみたら上手くいきませんでした。 http://wisdom.sakura.ne.jp/programming/c/c30.html ========================== #include<stdio.h> void func(int ); int main() { func(0); printf("プログラムを終了します"); return 0; } void func(int max) { if (max <= 10000) { printf("%d\r",max); func(max + 1); } } ========================== 実行してみると、何故か4700~4800の辺りで止まってエラーになってしまいます。 どうしてエラーになるのでしょうか?
- ベストアンサー
- C・C++・C#
- Cプログラムの解析(関数の呼び出し関係など)
仕事で必要なため、C言語の勉強をしています。 既存のプログラムに変更を加えるのために、膨大な量のソースコードを ながめて関係を把握しようとしているのですが、効率のよいやり方が わかりません。 バグのない盛り込みをするために、関数の呼び出し関係などを検索して 調べEXCELに書き出したりなどしているのですが、限界を感じています。 ツールをいくつか試用してみたのですが、どうもしっくりくるものが ありません。 例えば、 func_a() -> func_b() -> func_c() -> func_d() という関係 になっているものがあったとして、func_a() -> func_b()や func_b() -> func_c()の関係は表示できても、 func_a() -> func_b() -> func_c() の関係は一度に表示できず、 自分の頭の中で組み合わせて覚えておかなければならないなど.. みなさんは、ソースコードを解析し、その結果を把握して変更を加える際、 どうされているのでしょうか? アドバイスよろしくお願いします。
- 締切済み
- C・C++・C#
- C言語での改行コードの扱いについて教えてください。
改行コードは一般的に、 Windows・・・「CR+LF」 UNIX or Linux・・・「LF」 だと思うのですが、改行コードが「LF」のファイルをWindows上で、C言語で編集したらどういった改行コードになるのでしょうか。 (例えば、単純にファイルを1レコードずつ読み込んで別ファイルに書き込むといった処理) 出力時に「CR+LF」になってくるのでしょうか?それともまったく別のものになってしまうのでしょうか? 詳しい方、ぜひ教えてください。 ※改行コード「LF」のテキストファイルは、UNIXサーバから「HULFT」というファイル転送ソフトの「バイナリ転送モード」でWindowsサーバに送られてくる予定です。
- ベストアンサー
- C・C++・C#
- C言語のコーディングの仕方
C歴2か月未満の超ビギナーなのですが、 表題の件で質問します。 私は、Visual Studio2005でCのコーディングをしています。 ちなみにベタ打ちのコーディングです。 で、プログラムが長くなってきて、 自分でつけた変数や他人さまのプログラム見本コピペしたコードを 追いかけると、マウスの真ん中のボタン絶えずクルクル状態で、 頭の中も微妙にくるくると混乱してきます^^; 本日それが効率の上がらない原因ではとハタと思いました。 (違う突っ込みはお止め下さいませm(__)m) そこで、皆様はC++ではなくCの時は、 どうやって長文になるコーディングをしているのでしょうか? ぜひぜひお教え下さいませ。
- ベストアンサー
- C・C++・C#
- Cのソースコード集について
ファイル1個分くらいの小さいC言語のプログラムのソースコードが 沢山のっているサイトがあるのですが、知っている方がいたら教えてください。 確か海外のサイトで、いろんな人が自由にソースを投稿できたような気がします。 SourceForgeの小さい版みたいな感じで、Linuxなどのソースも扱っていました。載っているソースには自作PingやExploit系などがあったと思います 自分は今Cを勉強していて、上達するために他人のソースを読もうと思ったのですが、Linuxカーネルは難しすぎますしGNUの周辺のユーティリティ系も沢山のファイルに分割されていて自分には難しかったので以前にみたそのサイトのコードで勉強しようと思ったのですが どうやって行ったか忘れてしまいました。 なので勉強のために規模の小さいソースプログラムが必要なので 類似サイトなどでも何でもいいので情報をお持ちの方は教えてください。
- ベストアンサー
- C・C++・C#
- Visual Basic 2008にCソースコードを読み込めるか
Visual Basic 2008にCソースコードを読み込めるか Visual Basic 2008を使っているものです。xxxx.cやyyyy.hなどのCソースファイル、ヘッダーファイルがあります。これらをVisual Basic 2008上に移植したいのですが、簡単できる方法はありますでしょうか。手作業が入るのは止む無しなのですが、極力移植作業を簡略化したいと思ってます。
- ベストアンサー
- Visual Basic
- C# ファイル削除のエラーコード
言語:C# の質問です。(初心者 初めて1週間) ファイルの削除を行った際に、別プロセスが使用中で、 削除できなかった場合に対して、別処理を行いたいです。 ファイルが削除できない場合は、エラーを取得することができるのですが、 別プロセスが使用中のみの制御を入れたいと思っています。 VB6では、ファイル削除(Kill)ができなかった場合に、 エラーコードを返して、該当するエラーコードのみに 別処理を行うことができていました。 それと同じことを、C#でも行いたいです。 処理としては、 1.ファイルの削除を行う 2.ファイルの削除が出来なかった場合に対してのみ、 別処理を入れる (別プロセスが使用中のため削除できないファイルに対して) このような処理を行いたいのですが、 ファイルが削除できなかった場合の、エラーコードを 求め方を色々調べてみたのですが、見つかりません。 下記ソースで、プログラムを作成中です。 try{ System.IO.File.Delete(@削除するファイル名); } cach(System.IO.IOException) { //ここでエラーコードを取得し、該当するエラーコードのみに //対して、別処理を入れたい MessageBox.Show(err.Message); } MessageBox.Show(err.Message); ↑ もし、エラーコードが取得できないのであれば、 このエラーメッセージ文章に対してリテラルで制御をいれる ことも考えています。 どうか、ご教授ください。 よろしくお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- C言語の処理速度について
こんにちは C言語を使い始めました。 あるコードで ソース(1):デバッグ用にログを多めに吐き出すようにしているソース。 ソース(2):ソース(1)からログ排出だけコメントアウトしたソース。 を作ってみました。 ですが、 ソース(1)で機能確認後、ソース(2)にすると途端に処理速度が遅くなります。 (1)(2)で実質的な違いはログ排出のみなのですが、理由が分からず困っています。 【質問】 C言語でログ排出だけカットしたソースの方が処理速度が異様に遅い。 この対処策を質問させて下さい。 もし同じ経験された方がおられましたら是非アドバイスを頂ければ幸いです。 よろしくお願いします。
- 締切済み
- スマートフォンアプリ開発
お礼