• ベストアンサー

c言語で言うところの #define

スミマセン。教えていただきたいことがあります。 c言語はいくらか経験あるのですが、visual basic 2005 はまったくの初心者です。 visual basic には c言語で言うところの定義マクロプリプロセッサ#define の様な機能はあるのでしょうか? 無い場合、どんな感じで代用していますか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

ANo.1さんのおっしゃるとおり、数値や文字列なら const を使います。 ただ、Cの#define本来の機能を持ったマクロはないので、 本来の意味での代用はありません。 #define COMPUTE(a,b) (a+b*10) のような事はできないので、普通に関数を書きます。 むしろ、「C言語の#defineの方が関数や定数記述の代用」なので 本来の書き方をすると考えた方がよろしいでしょう。

psychesine
質問者

お礼

ありがとうございます。

その他の回答 (2)

回答No.3

#defineに関わらず、マクロの展開はC言語依存ではなく、プリプロセッサが処理しています。 プリプロセッサは、単なるテキスト処理系なので、Visual BASICのソースでも利用可能です。 面倒かもしれませんが、ソースをテキスト形式で保存して、コマンドラインから > cpp ファイル名.bas とでもしてみてください。そして、結果をVisual BASICに戻せばいいでしょう。 Cのプリプロセッサがなければ、フリーのC言語をダウンロードしましょう。 Borland、LSI-Cあたりなら、大丈夫だと思います。 ちなみに、C言語では、プリプロセッサ、コンパイラ、アセンブラ、リンカを順番に処理していき、それを1コマンドで済ますようにドライバとしてコマンドを実行します。 有名どころではUNIXのcc、GNU compiler collectionのgcc、Borland C++のbccがあります。

psychesine
質問者

お礼

ありがとうございます

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

例えば、 Global Const SelectYes = True Global Const SelectNo = False みたいな…。

psychesine
質問者

お礼

ありがとうございます 試してみます。

関連するQ&A

  • defineで定数が置き換えられない?(C言語)

    #defineについて質問です。 #defineは、ソースコード内にこの文字を見つけたら、コンパイルする前にこの文字をこの定数に置き換えて、というプリプロセッサですよね?だから、printfで#defineで定義した定数を出力する場合で、変換指定が必要ない場合は #include <stdio.h> #define DEF 100 void main(){ printf("#defineで定義された定数はDEFです"); } でもいいと思うんです。ですがこのソースコードは間違いで、実行結果は #defineで定義された定数はDEFです(←置き換えられてない) となってしまします。プリプロセッサだけ実行しても、DEFは100に置き換えられずそのままです。printfで#defineで定義した定数を出力させたい場合は書式指定をしなければなりません。なぜ、このような場合は#defineで定義した定数は置き換えられないのでしょうか?回答よろしくお願いします。

  • C言語 #defineについて

    C言語でどの様に考えれば良いか分からない事があるので、教えて下さい。 以下の様な行が出てきたのですが、どういう意味なのでしょうか? #define SYSTEM (*(volatile struct st_system *)0x80000) 現状分かっている事は 1.#define ABC 100   ならこれ以降で出てくるABCは100と読み替える。 2.volatileはコンパイラの最適化を抑制する様な意味。 とい事です。 以上、宜しくお願い致します。

  • ・Javaで、C言語の#defineに相当するもの

    ・Javaで、C言語の#defineに相当するもの 今までC/C++を使い込んできて、最近Javaの勉強を始めました。 C言語では条件分岐に使う定数を指定するのに#defineをよく使用していたのですが、Javaにもそれに相当するものはあるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • #defineの使い方

    お世話になります。 C#で質問があります。 #defineでシンボルを定義しておいて、 複数の別のファイルから、#ifでコンパイルを切り替えたいのですが、どのようにすれば可能でしょうか? C++の場合は、#includeで出来たと思うのですが・・ よろしくお願いいたします。

  • c#のマクロ定義について

    C言語でマクロ定義の場合以下のようにヘッダファイルに#defineで定義しますが、C#の場合どのようにすればいいのでしょうか。 C言語の場合 *** test.h *** #define TEST 5 C#の場合 public const int TEST = 5; //これでいいの? 専用のclassを用意するの? 初歩的な質問ですが宜しくお願い致します。

  • Visual C++でC言語も使える?

    C言語を覚えようと思ってますが、 Visual C++でC言語の勉強もできますか? Cのコードを記述しても動きますか? またできる場合、制限などありますか?

  • すみません。C言語にある#define文、sizeof演算子、gets

    すみません。C言語にある#define文、sizeof演算子、gets文の用語の意味が分からないので、教えてくれませんか?

  • C言語のコンパイラ

    C言語の勉強がしたいと思っているのですが、コンパイラっていうんですかね、それについて少し調べてみたら 無料なら"Borland C++ Compiler"で、有料ならなんかかなり高いっぽいけど"Visual C++"っていうのがあることが解りました。 よくプログラミング系のサイトの人で"Borland C++"のコンパイラを利用してとてもプログラミングがしやすくなったということが書いてあるのですが、"Visual C++"と比べたらどっちの方がいいんですか?(やっぱり有料の方?) もし人それぞれなら、みなさんは両方あったらどっちを使いますか? 初心者なら無料ので十分すぎるのだとは思いますが、プログラマーみたいな人から見るとどうなのかな~と思ったので教えていただけますか。 お願いします。 ついでに"Visual C++"って言語があるんですかね?何かそんな風に書いてあるところもあったもんで。 かさねがさねお願いします。

  • C#.net Define文

    C#.net でプログラムを作成中です。 C++では定数等を#defineで定義していましたが、C#ではDefineは無いとの事です。 C#でC++の#Define に相当する事は出来ないのでしょうか。 やりたい事は 長い同じコマンドを別の文字で代替する事です。 もしC#に#Define文があったとして、以下の様な事を行いたいのです。 #Define NL printf("\n"); NL このコーディングが展開した時、  pritf("\n"); と展開される。 この様な事が出来る文をご存知の方、若しくはこの様な事は出来ないと言う事をご存知の方、よろしく御回答下さい。 よろしくお願い致します。

  • C言語って??

    まずC言語を扱うソフトってビジュアルC++なんでしょうか?それとも他にもたくさんあるんですか?

専門家に質問してみよう