Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. What is #if 0

What is #if 0

Scheduled Pinned Locked Moved C / C++ / MFC
question
15 Posts 11 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Stephen Hewitt

    I hate #if 0:mad:. It's not so bad if the code commented out is small, but when large pieces of code are bracketed with these you can find yourself analyzing code only to find, when you get to the top, that you've been wasting your time and the code isn't even part of the product. This has happened to me many times. If the programmer simply commented it out the syntax highlighting will stop such problems from ever occurring. Steve

    T Offline
    T Offline
    toxcct
    wrote on last edited by
    #6

    Stephen Hewitt wrote:

    I hate #if 0

    me too. i use this purpose instead...

    #ifdef DEBUG
    #define DPRINT printf
    #else
    void DPRINT(...) {}
    #endif

    this way, in debug mode, we could DPRINT() something, which will not been took in account in release mode (and more, the compiler will optimize a call to DPRINT() in release). for instance :

    int Foo() {
    DPRINT("Foo()\n");
    int i = 654;

    // modification of i...
    
    DPRINT("Foo output : %d\\n", i);
    return i;
    

    }


    TOXCCT >>> GEII power
    [toxcct][VisualCalc 2.20][VisualCalc 3.0]

    P 1 Reply Last reply
    0
    • T toxcct

      Stephen Hewitt wrote:

      I hate #if 0

      me too. i use this purpose instead...

      #ifdef DEBUG
      #define DPRINT printf
      #else
      void DPRINT(...) {}
      #endif

      this way, in debug mode, we could DPRINT() something, which will not been took in account in release mode (and more, the compiler will optimize a call to DPRINT() in release). for instance :

      int Foo() {
      DPRINT("Foo()\n");
      int i = 654;

      // modification of i...
      
      DPRINT("Foo output : %d\\n", i);
      return i;
      

      }


      TOXCCT >>> GEII power
      [toxcct][VisualCalc 2.20][VisualCalc 3.0]

      P Offline
      P Offline
      Prakash Nadar
      wrote on last edited by
      #7

      you can #if 0 the code which needs to be ignored in both debug and release build, i.e. older logic to solve a problem, etc.


      -Prakash

      1 Reply Last reply
      0
      • I Imtiaz Murtaza

        I've seen in many source codes, some statements written in #if 0 block something like: #if 0 printf("Blah Blah"); #endif Please tell me what is the meaning of #if 0 in the code above.

        D Offline
        D Offline
        Divyang Mithaiwala
        wrote on last edited by
        #8

        [Message Deleted]

        M 1 Reply Last reply
        0
        • S Stephen Hewitt

          I hate #if 0:mad:. It's not so bad if the code commented out is small, but when large pieces of code are bracketed with these you can find yourself analyzing code only to find, when you get to the top, that you've been wasting your time and the code isn't even part of the product. This has happened to me many times. If the programmer simply commented it out the syntax highlighting will stop such problems from ever occurring. Steve

          K Offline
          K Offline
          kvprasad
          wrote on last edited by
          #9

          Yes steve u r definetly correct. But this is not supposed to be used to large chunks of code. it is more of an debugging approach than just saving old code. Tip: Always it is a good option to try to put a breakpoint to know if this code is compiled or not. a breakpoint cannot be inserted in any code that is not compiled. Hope this helps. kvprasad your future is what you think

          1 Reply Last reply
          0
          • D Divyang Mithaiwala

            [Message Deleted]

            M Offline
            M Offline
            Maximilien
            wrote on last edited by
            #10

            :confused:


            Maximilien Lincourt Your Head A Splode - Strong Bad

            1 Reply Last reply
            0
            • S Stephen Hewitt

              I hate #if 0:mad:. It's not so bad if the code commented out is small, but when large pieces of code are bracketed with these you can find yourself analyzing code only to find, when you get to the top, that you've been wasting your time and the code isn't even part of the product. This has happened to me many times. If the programmer simply commented it out the syntax highlighting will stop such problems from ever occurring. Steve

              D Offline
              D Offline
              David Crow
              wrote on last edited by
              #11

              Stephen Hewitt wrote:

              If the programmer simply commented it out...

              But nested comments are not allowed. That's where #if 0 is of use.


              "The words of God are not like the oak leaf which dies and falls to the earth, but like the pine tree which stays green forever." - Native American Proverb

              S 1 Reply Last reply
              0
              • D David Crow

                Stephen Hewitt wrote:

                If the programmer simply commented it out...

                But nested comments are not allowed. That's where #if 0 is of use.


                "The words of God are not like the oak leaf which dies and falls to the earth, but like the pine tree which stays green forever." - Native American Proverb

                S Offline
                S Offline
                Stephen Hewitt
                wrote on last edited by
                #12

                True. Steve

                1 Reply Last reply
                0
                • S Stephen Hewitt

                  I hate #if 0:mad:. It's not so bad if the code commented out is small, but when large pieces of code are bracketed with these you can find yourself analyzing code only to find, when you get to the top, that you've been wasting your time and the code isn't even part of the product. This has happened to me many times. If the programmer simply commented it out the syntax highlighting will stop such problems from ever occurring. Steve

                  P Offline
                  P Offline
                  Phil J Pearson
                  wrote on last edited by
                  #13

                  I agree that large blocks of #if 0'd code are annoying but VS2005 improves things a lot by greying it out. It even greys out (for example) #ifdef _DEBUG blocks when _DEBUG is not defined.


                  The opinions expressed in this communication do not necessarily represent those of the author (especially if you find them impolite, discourteous or inflammatory).

                  1 Reply Last reply
                  0
                  • P Prakash Nadar

                    Imtiaz Murtaza wrote:

                    I've seen in many source codes, some statements written in #if 0 block something like: #if 0 printf("Blah Blah"); #endif Please tell me what is the meaning of #if 0 in the code above

                    it simply means the code in side the block is ignore for compilation and will not appear in the final build. it is similar to saying #if !defined(SOME_BUILD_FLAG) or #if FALSE #endif since the dev wanted the code to be explicitly removed from compilation he used #if 0 #endif directive


                    -Prakash

                    S Offline
                    S Offline
                    Shraddhan
                    wrote on last edited by
                    #14

                    I believe that in Visual C++ 6.0 there is a key combination that will take you to / from #if and #endif but Microsoft in their 'wisdom' removed this very handy functionality from VC++.NET 2001. Yes, thanks Microsoft... Personally, when I need to comment out large chunks of code, I use #if defined dfkagtljarogh #end if // defined dfkagtljarogh where dfkagtljarogh is the result of some random keystrokes. Copy and paste to make sure that two instances match, and then it is not too bad to use Find to jump from beginning to end or vice versa. And as for being unable to nest /* ... */ comments in C++, this is an abomination that should never have been put into the language. Is there any reason whatsoever why C++ (or C even) HAVE TO REFUSE to allow such useful nested comments? Thanks again, Microsoft. Some C++ compilers do allow this. Shraddhan

                    P 1 Reply Last reply
                    0
                    • S Shraddhan

                      I believe that in Visual C++ 6.0 there is a key combination that will take you to / from #if and #endif but Microsoft in their 'wisdom' removed this very handy functionality from VC++.NET 2001. Yes, thanks Microsoft... Personally, when I need to comment out large chunks of code, I use #if defined dfkagtljarogh #end if // defined dfkagtljarogh where dfkagtljarogh is the result of some random keystrokes. Copy and paste to make sure that two instances match, and then it is not too bad to use Find to jump from beginning to end or vice versa. And as for being unable to nest /* ... */ comments in C++, this is an abomination that should never have been put into the language. Is there any reason whatsoever why C++ (or C even) HAVE TO REFUSE to allow such useful nested comments? Thanks again, Microsoft. Some C++ compilers do allow this. Shraddhan

                      P Offline
                      P Offline
                      Prakash Nadar
                      wrote on last edited by
                      #15

                      Shraddhan wrote:

                      And as for being unable to nest /* ... */ comments in C++, this is an abomination that should never have been put into the language. Is there any reason whatsoever why C++ (or C even) HAVE TO REFUSE to allow such useful nested comments?

                      yes i agree with you and that is one thing that I hate in VC++ compiler.


                      -Prakash

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups