• 締切済み

#ifdef多用でソースが見づらい

#ifdefを多用しているがソースがあり、 非常にソースが見づらいのですが、 適当な#ifdefを指定すると、有効になる箇所のみ 表示してくれるようなツールはありますでしょうか? (無効な箇所がグレー表示になるなどでも結構です) ---------------------------- #ifdef _YUUKOU_ println("YUUKOU"); #else println("MUKOU"); #endif ... #if 0 println("MUKOU"); #else println("YUUKOU"); #endif ----------------------------  ↓↓↓↓↓ ---------------------------- println("YUUKOU"); ... println("YUUKOU"); ---------------------------- よろしくお願いします。

  • kutu
  • お礼率54% (152/279)

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>Cのプリプロセッサを使って、 >上記のようなソースを書いた場合に、 大抵の場合、Cのプリプロセッサのオプションで、処理済みのソースを取り出すことができます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

Cのプリプロセッサが代用に使えるんじゃないでしょうか

kutu
質問者

お礼

すみません。カテゴリ間違いです。 「C&C++」のカテゴリと間違えて投稿してしまいました。 --------------------------------- Cのプリプロセッサを使って、 上記のようなソースを書いた場合に、 ソースが見づらいので、 それを見やすくなるようなツールはありませんか? --------------------------------- という質問内容です。 申し訳ありません。

関連するQ&A

  • #ifdef の使い方

    組み込み系のプログラムを現在勉強しています。 #ifdefについて質問させて頂きます。 下記コードの場合 #ifdef A ---- (1) Y = Z; #else -----#if B ------- (2) X = Z; ----#endif #endif ("-"は空白と思ってください。) この場合、Aが定義されていれば(1)が実行しコンパイル終了(#endif)。 Aが定義されていない場合、#else に行き、Bが定義されている場合は (2)を実行してコンパイル終了(#endif)という理解であっていますか? またこうした方が分かりやすいなど、アドバイス頂けると幸いです。 ご返答よろしくお願いします。

  • 正常時のログ出力方法(#ifdef DEBUGLOG使用)

    ret = syori(); if(ret != 0){ /* 異常終了(≠0)時 */ printf("error\n"); } という処理があった場合、defineでDEBUGLOGを定義している時は正常終了のメッセージを出すようにしたいと思っています。 そこで質問なのですが、 1.以下のような処理にすると問題があるのでしょうか?「else」の部分があまり好ましいと思えなくて・・・ ret = syori(); if(ret != 0){ /* 異常終了(≠0)時 */ printf("syori() エラー発生\n"); } #ifdef DEBUGLOG else { printf("syori() 正常終了\n"); } #endif 2.1.で記述した方法よりスマートな方法・より良い方法がありましたら教えていただけないでしょうか? よろしくお願いします。

  • プログラムの評価に関して

    C言語のソースコードを解析、評価しています。 コードがコメント(//や/* */)および#ifdefを多用しており 有効なコードが埋もれて見遠しが悪くなっています。 地道に草むしりのように無効な文を削除していますが、 簡単に処理するソフトは無いものでしょうか。 // 必要なコメント(説明文)のため削除したくない /* */ ばっさり削除 define無効な#ifdef ばっさり削除

  • ソースコードがわからないので教えてください。

    【Java】ソースコードを教えてください。 以下のあ~くの空欄に入るソースコードを教えてください。 解答がなくて困っています。 ・問題 コマンドラインから乱数の最小値,最大値および生成数を入力し、生成した乱数の最大値と最小値および平均を表示するプログラム UseRandomCommand.java を完成させなさい。実行例のように動作すること。 import java.util.Random; public class UseRandomCommand{ public static void main(String[] args){ Random r = new Random(); int max, min; double ave; if( args.length == 3 ){ int n =r.nextInt( あ )+ Integer.parseInt(args[0]); max=min=n; ave=(double)n; for (int i = 1; i < い ); i++){ n = r.nextInt( う )+ Integer.parseInt(args[0]); System.out.println(n); if (max < n) え ; else if (min>n) お ; ave+=(double) か ; } ave/=Double.parseDouble( き ); System.out.println("最大値:"+max); System.out.println("最小値:"+min); System.out.println("平均値:"+ave); } else { System.out.println("引数は3個必要です。"); System.out.println(" く "); } } } 【実行例】(java~~は標準入力) C:\Users\xxxxx\~~~\~~~>java UseRandomCommand 1 50 100 14 1 17 (略) 2 44 50 最大値:50 最小値:1 平均値:24.56 C:\Users\xxxxx\~~~\~~~>java UseRandomCommand 引数は 3 個必要です。 使い方)java UseRandomCommand 乱数の最小値 乱数の最大値 乱数の個数

  • #if

    #if defined(DECRYPTION_KEY_SCHEDULE) #if DEC_ROUND == NO_TABLES #define ff(x) (x) #else #define ff(x) inv_mcol(x) #ifdef dec_imvars #define d_vars dec_imvars #endif #endif 上の部分をコンパイルすると、 'ff'マクロが再定義されました というエラーメッセージが出るのですが、 なぜ再定義になるのか分かりません。  OS:Win2000 コンパイラ VC++ 6.0 以前は、同じようなエラーが出て、 #else を使わないで全て書き直しました。  よろしくお願いいたします。

  • メッセージボックスが表示されないのですが?

    WIN98 VC++6.0 MFCにて mmmというプロジェクト名でウィザードに従いダイアログベースのPGを作りました。 下記のようにコードの2箇所にAfxMessageBox("3",MB_OK);を追加しましたが、どちらもメッセージボックスが表示されません。 どうしてなのでしょうか? お分かりも方是非教えてください。 ************************** BOOL CMmmApp::InitInstance() { AfxEnableControlContainer(); #ifdef _AFXDLL Enable3dControls(); #else Enable3dControlsStatic(); #endif CMmmDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); AfxMessageBox("3",MB_OK);//■追加 if (nResponse == IDOK) { AfxMessageBox("3",MB_OK);//■追加 } else if (nResponse == IDCANCEL) { } // ダイアログが閉じられてからアプリケーションのメッセージ ポンプを開始するよりは、 // アプリケーションを終了するために FALSE を返してください。 return FALSE; }

  • Javaの課題について質問です。パート(2)

    import java.io.Console; public class A23_exec { public static void main(String args[]){ try{ A23_StrArray list = new A23_StrArray(); System.out.println("-------------------------------処理メニュー-------------------------------"); System.out.println("| 01・・・要素を追加 02・・・指定のインデックスの要素を上書き|"); System.out.println("| 03・・・指定インデックスの要素を表示 04・・・全ての要素を削除 |"); System.out.println("| 05・・・全ての要素を表示 06・・・全てのインデックス数を表示 |"); System.out.println("| 07・・・全ての要素を昇順でソート 08・・・全ての要素を降順でソート |"); System.out.println("| 09・・・ファイルの読込み 10・・・ファイルを追記して読込み |"); System.out.println("| 11・・・ファイルを上書きして読込み 12・・・ファイルに書込み |"); System.out.println("| 13・・・ファイルに追記して書込み 14・・・ファイルに上書き書込み |"); System.out.println("| 99・・・処理を終了 |"); System.out.println("--------------------------------------------------------------------------"); System.out.println(" ※処理メニュー以外のNoを入力しても処理出来ませんので注意して下さい。"); System.out.println(" ※全て半角英数字で入力して下さい。"); System.out.println(" ↓処理Noを入力して下さい。↓"); while(true){ System.out.println("-----処理No-----"); String inputData = input(); if(inputData.equals("99")){ System.out.println("終了"); System.exit(0); break ; } else if(inputData.equals("01")){ System.out.println("要素追加"); inputData = input(); list.add(inputData); } else if(inputData.equals("02")){ System.out.println("指定インデックスの要素の上書き"); inputData = input(); list.set(0,inputData); System.out.println(list.toString()); } else if(inputData.equals("03")){ System.out.println("指定インデックスの要素を表示"); inputData = input(); System.out.println(list.get(0)); } else if(inputData.equals("04")){ System.out.println("全ての要素を削除"); list.clear(); } else if(inputData.equals("05")){ System.out.println("全ての要素を表示"); list.getAll(); System.out.println(list.getAll()); } else if(inputData.equals("06")){ System.out.println("全てのインデックス数を表示"); int item =list.getIndex(); System.out.println(item); } else if(inputData.equals("07")){ System.out.println("全ての要素を昇順でソート"); list.sort(list.ASC_SORT); for(int i = 0;i < list.getIndex(); i++){ System.out.println(list.get(i)); } } else if(inputData.equals("08")){ System.out.println("全ての要素を降順でソート"); inputData = input(); list.sort(list.DESC_SORT); for(int i = 0;i < list.getIndex(); i++){ System.out.println(list.get(i)); } } else if(inputData.equals("09")){ System.out.println("ファイルの読み込み"); inputData = input(); list.readFile(inputData); } else if(inputData.equals("10")){ System.out.println("ファイルを追記して読み込み"); inputData = input(); list.readFile(inputData,true); } else if(inputData.equals("11")){ System.out.println("ファイルを上書きして読み込み"); inputData = input(); list.readFile(inputData,false); } else if(inputData.equals("12")){ System.out.println("ファイルに書き込み"); inputData = input(); list.writeFile(inputData); } else if(inputData.equals("13")){ System.out.println("ファイルに追記して書き込み"); inputData = input(); list.writeFile(inputData,true); } else if(inputData.equals("14")){ System.out.println("ファイルに上書きして読み込み"); inputData = input(); list.writeFile(inputData,false); } else{ System.out.println("処理Noが違います。"); } } }catch(Exception e){ System.out.println(e); } } private static String input(){ try{ Console cns = System.console(); //String input= cns.readLine(); return cns.readLine(); } catch(Exception e){ System.out.println(e); return ""; } } } 宜しくお願い致します。

  • プログラミング(JAVA)について

    2つほど質問があります。どなたか回答していただける方がいたらお願いします。 1、以下のじゃんけんゲームのプログラムを作成したのですがfor文を用いてコードを短くするにはどうすればいいですか?      class jyanken { public static void main(String[] args) { int x = 0, y = 0; if (args[0].equals("グー")) { x = 0; } else if (args[0].equals("チョキ")) { x = 1; } else if (args[0].equals("パー")) { x = 2; } else { System.out.println("エラー"); } y = (int)(Math.random() * 10.0) % 3; if (x == 0) { if (y == 0) { System.out.println("あいこ"); } else if (y == 1) { System.out.println("勝ち"); } else if (y == 2) { System.out.println("負け"); } } else if (x == 1) { if (y == 1) { System.out.println("あいこ"); } else if (y == 2) { System.out.println("勝ち"); } else if (y == 0) { System.out.println("負け"); } } else if (x == 2) { if (y == 2) { System.out.println("あいこ"); } else if (y == 0) { System.out.println("勝ち"); } else if (y == 1) { System.out.println("負け"); } } } } 2、もう1パターンでじゃんけんプログラムを作成しようと考えているのですが。上手くできないので参考のファイルを掲示してもらえると嬉しいです。 機能としては、for文とif文を使用して。プログラムの起動と同時に、コンピュータがグー、チョキ、パーをランダムに出す(プレーヤに見せない) 次に人がグー、チョキ、パー何を出すかをキーボードで入力して最後にプログラムが出したものとコンピュータがランダムに出したものと比較し、勝負を表示する。といった感じです。

  • Javaの引数を使ってチェックしていくプログラムですが

    public class AAA{ public static void main(String args[]){ System.out.println("チェック開始"); int ContainerA,ContainerB,ContainerC; String PP = "Sweets"; if (args[0].length() != 1 ){        // 引数の数が1以外の場合 { ContainerA = 1;       // 1をエラーコードに設定 } else if(!args[0].equalsIgnoreCase("cake") && !args[0].equalsIgnoreCase("manjyu"))        //引数が CAKE でも MANJYU でもない場合(大/小文字区別せず) { ContainerC = 99;      // 99をエラーコードに設定 } else      // それ以外の場合 { ContainerB = 0;     // 0をエラーコードに設定 } } else if(ContainerB == 0){       // もしエラーコードが0の場合 { System.out.println(PP + "?"); //("商品名+?")を表示 } if(ContainerA == 1)      // エラーコードが1の場合 { System.out.println("プログラム終了"); } else if(ContainerC == 99){       // エラーコードが99の場合 System.out.println("プログラム終了"); } } else{        //それ以外の場合(正常終了処理) System.out.println("正常終了"); } } } 上記のソースはコンパイルできないのですが、どこがおかしいのでしょうか? また、条件分岐が ifやelseしか使い方がよくわからないので、他のよい方法がありましたら教えてください。

    • ベストアンサー
    • Java
  • javaに関しての質問です (エラー)

    最近javaの勉強を始めたばかりの者です とある動画をみながら勉強をしていたのですが なぜかエラーが出てしまいます。 エラーの内容は... エラー:この文に制御が移ることはありません     if( c== 13){ エラー:return文が指定されていません この二つです、もし解決方法がわかる方がいましたらぜひ教えてくれるとうれしいです 下がソースコードになります。 public class part01 { static String name = "すけさん"; static int lv = 30; public static void main( String[] args )throws java.io.IOException { putzyosyou(); // 序章を表示 putcommnd(); if(lv<40){ putgameover(); }else{ putgamecrear(); } } public static void putzyosyou() { System.out.println("魔王が世界を滅ぼそうとしている。"); System.out.println(name + "はレベルが" + lv + "のツワモノです"); } public static void putcommnd()throws java.io.IOException { System.out.println("1.魔王を倒しに行く"); System.out.println("2.修行する"); System.out.println("3.だれかに頼る"); System.out.println("4.そんなことよりも寝よう"); int c = inputcommnd(); if( c== '1' ){ System.out.println("魔王が現れた!!"); }else if( c== '2' ){ lv += 2; System.out.println ("レベルが"+ lv + "になった!!"); putcommnd(); } } public static int inputcommnd()throws java.io.IOException { int c = System.in.read(); if( c== 10){ return( inputcommnd() ); if( c== 13){ return( inputcommnd() ); } return( c ); } } public static void putgameover() { System.out.println(name + "は負けました。"); System.out.println("GAME OVER"); } public static void putgamecrear() { String str = name + "は魔王を倒しました。"; put( str ); if(lv>120){ System.out.println("レベル" + lv + "なので魔王ゴミでした"); }else if(lv>80){ System.out.println("レベル" + lv + "なので余裕でした"); }else if(lv>50){ System.out.println("レベル" + lv + "なので倒せました"); }else{ System.out.println("レベル" + lv + "なので苦戦しました"); } System.out.println("GAME CREAR"); } static void put( String str ) { System.out.println( str ); } }

    • ベストアンサー
    • Java

専門家に質問してみよう