Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Feb 1997 13:52:50 -0700 (MST)
From:      Terry Lambert <terry@lambert.org>
To:        current@freebsd.org
Subject:   G++ calling conventions
Message-ID:  <199702152052.NAA03985@phaeton.artisoft.com>

next in thread | raw e-mail | index | archive | help

I have an application which aggregates a number of COM objects
into a single implementation object for a set of interfaces
(a set of pointers to code providing implementation for pure
virtual base classes).

Does anyone know if gcc and/or g++ support the __stdcall type
designator?

The __stdcall allows you to mark functions as callee-pop on a
per function basis (and __cdecl allows you to mark functions
caller-pop on a per function basis).

For instance:

struct ImyInterface {
	virtual void __stdcall function1() = 0;
};


class CmyInterface : ImyInterface {
public:
	CmyInterface();
	~CmyInterface();
	virtual void __stdcall function1( void) = 0;
};

...

// this function is callee-pop, and will pop its arguments off the
// stack before returning...
void __stdcall
CmyInterface::function1( void)
{
	...
}

...sort of like a generic "-mrtd" that doesn't need an rtd instruction?
(Clearly, varradic functions must be __cdecl).

???


PS: What would be the chances of supporting the "interface" keyword
    as an alias for "struct" in a future release?  This can be done
    in a FreeBSD-specific way using the g++ config data files (I think).


					Regards,
					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199702152052.NAA03985>