• ベストアンサー

defineのかっこ

#define a (1) defineで即値を指定します。 かっこは意味がありますか?

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

  • ベストアンサー
  • akiyousan
  • ベストアンサー率29% (13/44)
回答No.1

即値で無い場合にかっこが必要なケースがあると 理解できているのであれば、 この場合は”意味が無い”で良いかと思います。

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

字句連結が絡んでくると、意味がないわけではありません。 # レアケースですが... #define join(a,b) join2(a,b) #define join2(a,b) a##b #define a (1) int join(abc,a); こんな場合、カッコがなければコンパイルできますが、カッコがあればエラーになります。(処理系のバグを踏む可能性もあります)

関連するQ&A

  • 分割コンパイルの#defineについて

    分割コンパイルで ファイル1 #include <stdio.h> #define number 10 char string[number]; int main(void){ string[0]='a'; string[1]='b'; file_to(); return 0; } ファイル2 #include <stdio.h> #define number 10 extern char string[number]; void file_to(void){ /***何かの処理をする*****/ } って感じなんですけども、配列string の中身の値をdefineによって指定しているのですが、片方のdefineの値を変更する時、もう一つのdefineも手動で変更しています。関係するファイル数が多くなってくると大変なので、どれかのdefineの値を変化させたら自動的に他のdefineの値も変更するプログラムの組み方はありませんか? 質問がわかりにくいかも知れませんがよろしくお願いします。

  • 【#define】 defineで定義した値を配列のサイズに使う事は可能?

    タイトルの通り、defineで定義した値を配列のサイズ指定に使いたいと考えています。 この場合、次のような使い方をしても問題ないのでしょうか? /* サンプルここから */ #define SIZE_A 10 #define SIZE_B 20 #define SIZE_ALL (SIZE_A * SIZE_B) cahr ARR[SIZE_ALL]; /* サンプルここまで */ コンパイル時にワーニング等はありませんが、int型という型を宣言していないSIZE_ALLを要素数として使用するのが不安に感じるのですが問題ないのでしょうか? int SIZE_int = SIZE_ALL; とdefineした値を明示的にint型変数に代入した上で、 cahr ARR[SIZE_int]; とすべきなのでしょうか? 初歩的な質問ですが、ご教示お願いします。

  • 変数を取り出しているのに、なぜdefine関数は使

    変数を取り出しているのに、なぜdefine関数は使わないの? 変数に値を格納して取り出すときは、define関数を使うと覚えたのですが 牡蠣コードでも変数に値を入れて取り出せます。 <?php $number = 12345; echo $number; ?> define関数はどういう時に使うのでしょうか?文字列の場合のみですか?

    • ベストアンサー
    • PHP
  • #defineについて、教えて下さい。

    Cの、プログラムを勉強中なのですが、 #define SSS(x,y) ((x) > (y) ? (x) : (y)) は、どういう意味なのでしょうか? 教えて下さい。よろしくお願いします。

  • defineについて

    Array('0'=>'1234', '1'=>'太郎', '2'=>'20', '3'=>'TOKYO' ) この配列を以下のdefineで設定したkeyの名前に変更したいと考えています。 ---define.php--- <?php define("KEY_0", "ID"); define("KEY_1", "NAME"); define("KEY_2", "AGE"); define("KEY_3", "FROM"); ?> ---こんな形にしたい--- Array('ID'=>'1234', 'NAME'=>'太郎', 'AGE'=>'20' 'FROM'=>'TOKYO' ) ---プログラム--- <?php require_once('define.php'); for($i=0;$i<4;$i++){ /* うまくループさせてkeyを変更したいんですが どのような処理をしたらよいでしょうか?? */ } ?> 何か良い方法があれば教えていただきたいです。お願いします。

    • ベストアンサー
    • PHP
  • define文のパラメータを実行時に変化させたい

    Cで、define文で値を指定することがあると思います。 シェルスクリプトあたりを使って、define文で指定される定数のパラメータを変化させて、自動でパラメータを変化させてデータを取りたいです。 そのようなときにはどのように記述すればよいのでしょうか? たとえば、下のような場合です。 環境はlinuxです。 よろしくお願いします。 //////////////////////////////////////// #define LOOP 400 <---- ここを実行時に変化させたい。 #define FILESIZE LOOP*16 int main(int argc, char** argv){ printf("FILESIZE = %d\n", FILESIZE); }

  • #defineについて

    #define STATIC_ASSERT(expr) { \ char __STATIC_ASSERTION[(expr) ? 1 : -1]; \ (void)__STATIC_ASSERTION; \ } /* 符号付き整数の右シフトが算術シフトかどうか */ #define SHIFT_LEFT_SINGNED_USES_SAL \ (((signed int)0xffffffff >> 1) == 0xffffffff) /* 符号無し整数の右シフトが論理シフトかどうか */ #define SHIFT_LEFT_UNSIGNED_USES_SHL \ (((unsigned int)0xffffffff >> 1) == 0x7fffffff) とは一体どういう意味なのでしょうか? なぜ、ブロックの中にchar型が宣言されているのでしょうか? なぜ、(void)とキャストされているのでしょうか? できたらわかりやすくご教授よろしくお願いします。

  • 一重、ディファインで変わる?

    一重で、ちょっとでも目を大きく見せたいです。カラコンはあからさまな感じが苦手で、ディファインを試してみようかと思ってます。一重でもディファインで印象変わりますか?

  • define で 配列

    #defineで配列を定義したいのですがこのようなことは可能でしょうか? ヘッダファイル(test.h)で #define MAX (2) int A[MAX]={20,30}; ソースファイルで #include <stdio.h> #include "test.h" int main(){ int i; for(i=0;i<MAX;i++){ printf("A[%d]=%d\n",i,A[i]); } return 0; } とやれば出来るのですが、このヘッダファイルを複数のソースで参照すると 多重定義であるとおこられてしまいます。 #defineで #define A[MAX] {20,30} のように配列を定義する方法は存在するのでしょうか? どなたか良い方法を御存じの方、ご教授お願いします。

  • ディファインについて

    2週間前からディファインにしています 2weekなので今日で丁度終わります ディファインで確かに目が大きくなりました だけど母に不自然で気持ち悪いと言われてしまいました 確かに自分で見ても顔を鏡近くに持って行って見てみると目だけが不自然だと思います だけど遠目で見ると目がぱっちりしていていい感じになるかなと感じます 周りの友達もお世辞だと思いますが馴染んでると言ってくれているし 普通のコンタクトに戻そうかディファインを続けようか迷っています どちらがいいと思いますか?

専門家に質問してみよう