thunk3.c

来自「this is a gcc file, you can download it 」· C语言 代码 · 共 59 行

C
59
字号
// Test that variadic function calls using thunks work right.// Note that this will break on any target that uses the generic thunk//  support, because it doesn't support variadic functions.// excess errors test - XFAIL mips*-*-* rs6000-*-* powerpc-*-eabi m68k-*-coff m68k-motorola-sysv m88k-motorola-sysv3  mn10300-*-* mn10200-*-* v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa-*-*#include <stdarg.h>struct A {  void* p;  A (void* q): p (q) { }  A (const A& a): p (a.p) { }};class CBase {public:   virtual void BaseFunc();};class MMixin {public:   virtual A MixinFunc(int arg, ...) = 0;};class CExample : public CBase, public MMixin {public:   A MixinFunc(int arg, ...);};void CBase::BaseFunc(){}A CExample::MixinFunc(int arg, ...){  va_list ap;  va_start (ap, arg);  if (arg != 1 || va_arg (ap, int) != 2 || va_arg (ap, int) != 3      || va_arg (ap, int) != 4 || va_arg (ap, int) != 5      || va_arg (ap, int) != 6 || va_arg (ap, int) != 7      || va_arg (ap, int) != 8 || va_arg (ap, int) != 9)    return 0;  return this;}void* test(MMixin& anExample){  return anExample.MixinFunc(1,2,3,4,5,6,7,8,9).p;}int main (){  CExample c;  if (test(c) != &c)    return 1;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?