new03.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 44 行

C
44
字号
#include "fail.h"
#include <stdio.h>
#include <stdlib.h>

float *alias(float & dst, const float & src)
{
    return new (&dst) float(src);
}
int *alias(int & dst, const int & src)
{
    return new (&dst) int(src);
}
char *alias(char & dst, const char & src)
{
    return new (&dst) char(src);
}
struct S { int a; int b; int c; };
typedef int S::* MP;
MP *alias(MP & dst, const MP & src)
{
    return new (&dst) MP(src);
}

int main()
{
    float y1 = 2.3;
    float x1, *px1;
    px1 = alias( x1, y1 );
    if( px1 != &x1 || *px1 != y1 || *px1 != x1 || x1 != y1 ) fail(__LINE__);
    char y2 = '@';
    char x2, *px2;
    px2 = alias( x2, y2 );
    if( px2 != &x2 || *px2 != y2 || *px2 != x2 || x2 != y2 ) fail(__LINE__);
    int y3 = '@';
    int x3, *px3;
    px3 = alias( x3, y3 );
    if( px3 != &x3 || *px3 != y3 || *px3 != x3 || x3 != y3 ) fail(__LINE__);
    MP y4 = &S::b;
    MP x4, *px4;
    px4 = alias( x4, y4 );
    if( px4 != &x4 || *px4 != y4 || *px4 != x4 || x4 != y4 ) fail(__LINE__);
    _PASS;
}

⌨️ 快捷键说明

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