what is cdecl

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Amandil

    what is cdecl

    Hi, all.

    I know this is not standard C, but I see the word cdecl used as a type
    qualifier (?) in external declarations - including the standard
    headers - and I'd like to know what it means (and how they it's used).
    It is, as far as I know, an extension to std C by several compilers.
    (Some use __cdecl instead, which is allowed by the standard.)

    This may be off-topic on clc because it's not standard, but I believe
    an extension that is common to many compilers isn't so far off the
    mark. I apologize if I'm wrong on that point.

    -- Marty Amandil (not quite ready to face the firing squad)
  • Kenny McCormack

    #2
    Re: what is cdecl

    In article <dc9961c7-c740-4f15-88a8-206ef195648b@8g 2000hse.googleg roups.com>,
    Amandil <mazwolfe@gmail .comwrote:
    >Hi, all.
    >
    >I know this is not standard C, but I see the word cdecl used as a type
    >qualifier (?) in external declarations - including the standard
    >headers - and I'd like to know what it means (and how they it's used).
    >It is, as far as I know, an extension to std C by several compilers.
    >(Some use __cdecl instead, which is allowed by the standard.)
    >
    >This may be off-topic on clc because it's not standard, but I believe
    >an extension that is common to many compilers isn't so far off the
    >mark. I apologize if I'm wrong on that point.
    >
    >-- Marty Amandil (not quite ready to face the firing squad)
    As far as the dorks in this NG are concerned the use of the "cdecl"
    "qualifier" is no more (and no less) relevant to the price of hay in
    Kansas than is the use of the "ThroatWarb ler Mangrove" "qualifier" .

    Comment

    • Mark Bluemel

      #3
      Re: what is cdecl

      Amandil wrote:
      Hi, all.
      >
      I know this is not standard C, but I see the word cdecl used as a type
      qualifier (?) in external declarations - including the standard
      headers - and I'd like to know what it means (and how they it's used).
      It is, as far as I know, an extension to std C by several compilers.
      (Some use __cdecl instead, which is allowed by the standard.)
      When I want to know such things I use Google. Did you try that?

      http://en.wikipedia.org/wiki/X86_cal...ventions#cdecl probably
      tells you what you want to know.
      This may be off-topic on clc because it's not standard, but I believe
      an extension that is common to many compilers isn't so far off the
      mark. I apologize if I'm wrong on that point.
      From my brief examination of the webpage cited above, I get the
      impression that it's a) platform-specific and b) not restricted to
      C implementations . I'd say it's pretty off-topic. The firing squad
      are loading their weapons, it's probably time for a final cigar...

      Comment

      • Amandil

        #4
        Re: what is cdecl

        On Mar 4, 12:07 pm, santosh <santosh....@gm ail.comwrote:
        Amandil wrote:
        Hi, all.
        >
        I know this is not standard C, but I see the word cdecl used as a type
        qualifier (?) in external declarations - including the standard
        headers - and I'd like to know what it means (and how they it's used).
        It is, as far as I know, an extension to std C by several compilers.
        (Some use __cdecl instead, which is allowed by the standard.)
        >
        This may be off-topic on clc because it's not standard, but I believe
        an extension that is common to many compilers isn't so far off the
        mark. I apologize if I'm wrong on that point.
        >
        It's a compiler attribute to specify the C calling convention for that
        function. A calling convention specifies the machine level interface of
        that function, i.e, where the function expects it's arguments, where it
        returns it's return value, whether it pops of it's arguments or whether
        the caller must do that and other such details.
        >
        <etc. Snipped for brevity. I hate long quotes>

        Thanks. I basically know about the C calling convention, so I
        understand your answer well enough. I hadn't known about cdecl being
        related to those, though.

        -- Marty

        Comment

        • Kenny McCormack

          #5
          Re: what is cdecl

          In article <fqjv30$eii$1@a ioe.org>,
          Mark Bluemel <mark_bluemel@p obox.comwrote:
          >Amandil wrote:
          >Hi, all.
          >>
          >I know this is not standard C, but I see the word cdecl used as a type
          >qualifier (?) in external declarations - including the standard
          >headers - and I'd like to know what it means (and how they it's used).
          >It is, as far as I know, an extension to std C by several compilers.
          >(Some use __cdecl instead, which is allowed by the standard.)
          >
          >When I want to know such things I use Google. Did you try that?
          >
          >http://en.wikipedia.org/wiki/X86_cal...ventions#cdecl probably
          >tells you what you want to know.
          Note that, according to the dogma of clc, Wikipedia is a) the work of
          the devil and b) completely unreliable. If you don't believe me, feel
          free to use Google Groups and you'll see.

          So, one certainly can't use Wikipedia as a suggested reference resource
          and still expect to keep one's Clique membership in good standing.

          Furthermore, and I'm now speaking entirely seriously, without
          tongue-in-cheek, maybe the OP would actually *like* to hear your
          opinions. Maybe he actually would prefer the commentary of real, live,
          honest-to-goodness humans, instead of sterile cold reference material.

          Ever think of that?

          P.S. Of course, once he's spent some time in CLC, he'll realize that
          there aren't any real, live, honest-to-goodness humans here, but that
          doesn't mean he can't come in with honest expectations.

          Comment

          • Robbie Hatley

            #6
            Re: what is cdecl


            I was all set to say that "__cdecl" and "__stdcall" were C and C++
            keywords, because they always turn blue in every IDE I've used.

            But, on looking for them in the standards, I see that just aint so!

            On doing some googling, it seems these are mostly (or perhaps solely)
            Microsoft Windows features. They appear not to be used in any other
            operating system. Try asking about them in the following groups:

            comp.os.ms-windows.program mer.win32
            microsoft.publi c.win32.program mer

            But in a nutshell, these two declarators specify how the stack is
            used when a function is called. For "__cdecl", the calling function
            does the stack clean-up; for "__stdcall" , the called function does
            the stack clean-up. Also, "__stdcall" doesn't handle functions with
            variable number of arguments. In practice, "__stdcall" is used for
            all API callback functions, and "__cdecl" is used for everything
            else.

            --
            Cheers,
            Robbie Hatley
            lonewolf aatt well dott com
            www dott well dott com slant user slant lonewolf slant


            Comment

            Working...