use of #Pragma

Discussion in 'C++' started by karunesh, Jan 23, 2007.

  1. karunesh

    karunesh Guest

    why this #pragma use very extnsivly

    please tell me the usses
    thaks!!
    Regards,
    Karuensh
    karunesh, Jan 23, 2007
    #1
    1. Advertising

  2. On Jan 23, 8:07 am, "karunesh" <> wrote:
    > why this #pragma use very extnsivly


    Pragma directives are implementation specific and ignored on
    implementations that don't understand them. Some uses that I know of is
    in MS VC++ uses them instead of include-guards. I seem to recall that
    they can be used on some platforms to specify alignment of members of
    classes and structs. I think OpenMP uses them to indicate parts of the
    code that should be parallelized. Another common usage is to set
    compiler-options that could just as well have been passed as command
    line options.

    --
    Erik Wikström
    =?iso-8859-1?q?Erik_Wikstr=F6m?=, Jan 23, 2007
    #2
    1. Advertising

  3. karunesh

    karunesh Guest

    Dear Erik ,

    Thanks for a beautiful Explation .
    as i know in inclusion gard we use

    #ifndef _SOME_

    /* Header file body */

    #endif

    and i remmber some where i read that #pragma can be use for structure
    paddsing .
    some where i also read that its also use to change in entery point of
    the programe.

    can you put focus on the same ..
    how this can be handle

    Regards,
    Karuensh



    Erik Wikström wrote:
    > On Jan 23, 8:07 am, "karunesh" <> wrote:
    > > why this #pragma use very extnsivly

    >
    > Pragma directives are implementation specific and ignored on
    > implementations that don't understand them. Some uses that I know of is
    > in MS VC++ uses them instead of include-guards. I seem to recall that
    > they can be used on some platforms to specify alignment of members of
    > classes and structs. I think OpenMP uses them to indicate parts of the
    > code that should be parallelized. Another common usage is to set
    > compiler-options that could just as well have been passed as command
    > line options.
    >
    > --
    > Erik Wikström
    karunesh, Jan 23, 2007
    #3
  4. On Jan 23, 9:49 am, "karunesh" <> wrote:
    > Erik Wikström wrote:
    > > On Jan 23, 8:07 am, "karunesh" <> wrote:
    > > > why this #pragma use very extnsivly

    >
    > > Pragma directives are implementation specific and ignored on
    > > implementations that don't understand them. Some uses that I know of is
    > > in MS VC++ uses them instead of include-guards. I seem to recall that
    > > they can be used on some platforms to specify alignment of members of
    > > classes and structs. I think OpenMP uses them to indicate parts of the
    > > code that should be parallelized. Another common usage is to set
    > > compiler-options that could just as well have been passed as command
    > > line options.


    Try to post your replys below the text you are replying to.

    > Thanks for a beautiful Explation .
    > as i know in inclusion gard we use
    >
    > #ifndef _SOME_
    >
    > /* Header file body */
    >
    > #endif
    >
    > and i remmber some where i read that #pragma can be use for structure
    > paddsing .
    > some where i also read that its also use to change in entery point of
    > the programe.
    >
    > can you put focus on the same ..
    > how this can be handle


    Might be possible, but I've never seen it. But as I said it's
    implementation-specific so you can't expect it to work on anything but
    the one compiler and platform you tested it on (maybe even on that
    specific installation). Besides I can't see any benefit of changing the
    entry-point of a program, unless you are writing a library like a DLL
    or something, but then you are already using implementation specific
    stuff anyway.

    A good rule is to avoid using pragmas unless your _really_ need them as
    they might render your code unportable.

    --
    Erik Wikström
    =?iso-8859-1?q?Erik_Wikstr=F6m?=, Jan 23, 2007
    #4
  5. karunesh

    Guest

    A deep explanation is available in MSDN help for MSVC pragmas. GCC
    doesn't provide much pragmas.
    , Jan 23, 2007
    #5
  6. karunesh

    Michael Guest

    karunesh wrote:
    > Dear Erik ,
    >
    > Thanks for a beautiful Explation .
    > as i know in inclusion gard we use
    >
    > #ifndef _SOME_
    >
    > /* Header file body */
    >
    > #endif


    In MSVC, the same code could be written as:

    #pragma once
    /* Header file body */

    Note that your way is portable. But the one nice thing about the
    pragma approach is that it avoids the error when you cut and paste your
    code to another file, and forget to rename _SOME_, then your header
    files clash. (I.e., you can just put that one line, and don't have to
    edit it for each header file.)

    The other time I tend to use pragmas is to turn certain warnings off.
    MSVC has one particularly annoying one if you do something like this:
    std::map<std::string, int>
    where when it instantiates templates, it winds up creating mangled
    names that are really long and then gives you a warning that the names
    are very long. I tend to turn that one off (although now I favor
    turning it off globally across the whole project, rather than using
    #pragma on a file-by-file basis). As was mentioned before,
    implementation-specific stuff.

    Michael
    Michael, Jan 23, 2007
    #6
  7. karunesh

    Ondra Holub Guest

    karunesh napsal:
    > why this #pragma use very extnsivly
    >
    > please tell me the usses
    > thaks!!
    > Regards,
    > Karuensh


    Do not use #pragma. If you think you need it, you are 99% wrong and you
    really do not need it. #pragma is great way how to create code with low
    maintanability.

    One nice example are headers of standard C++ library in Microsoft
    Visual C++ compiler. If you try simple program which uses for example
    std::map and turn all warnings on, you get warnings on #pragmas, which
    are disabling warnings (there is not such warning).
    Ondra Holub, Jan 23, 2007
    #7
  8. karunesh

    Ian Collins Guest

    Ondra Holub wrote:
    > karunesh napsal:
    >
    >>why this #pragma use very extnsivly
    >>
    >>please tell me the usses
    >>thaks!!
    >>Regards,
    >>Karuensh

    >
    >
    > Do not use #pragma. If you think you need it, you are 99% wrong and you
    > really do not need it. #pragma is great way how to create code with low
    > maintanability.
    >

    So you haven't worked with OpenMP or embedded environments? The latter
    often have pragmas for machine specific options.

    The advice is sound for portable code for a hosted environment.

    --
    Ian Collins.
    Ian Collins, Jan 23, 2007
    #8
  9. karunesh

    Guest

    On Jan 23, 12:15 pm, "Michael" <> wrote:
    > karunesh wrote:
    > > #endifIn MSVC, the same code could be written as:

    >
    > #pragma once
    > /* Header file body */
    >
    > Note that your way is portable. But the one nice thing about the
    > pragma approach is that it avoids the error when you cut and paste your
    > code to another file, and forget to rename _SOME_, then your header
    > files clash. (I.e., you can just put that one line, and don't have to
    > edit it for each header file.)



    While quite OT, the other "advantage" of MS's #pragma once is that it
    prevents the entire second (and subsequent) inclusions of the header
    from happening at all. So compilation speeds can potentially improve
    when you have multiple inclusions of a large header.
    , Jan 23, 2007
    #9
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    9
    Views:
    13,920
    Rob Dekker
    Jul 21, 2005
  2. code break

    What is use the of Pragma directives!!!

    code break, Mar 24, 2006, in forum: C Programming
    Replies:
    4
    Views:
    11,041
    Eric Sosman
    Mar 24, 2006
  3. kris

    How to use the cpponly compiler pragma

    kris, Nov 3, 2006, in forum: C Programming
    Replies:
    8
    Views:
    266
    Jean-Marc Bourguet
    Nov 3, 2006
  4. Replies:
    4
    Views:
    110
  5. need help with use pragma

    , May 24, 2005, in forum: Perl Misc
    Replies:
    5
    Views:
    89
    Sherm Pendley
    May 25, 2005
Loading...

Share This Page