LINUX.ORG.RU

История изменений

Исправление former_anonymous, (текущая версия) :

нет, тупо копируем структуры. Типа того


struct A_v1
{
    float f;
};

struct A_v2
{
    float f;
    char c;
};

struct A_v3
{
    float f;
    char c;
    int data;
};

A_v1 get_data_v1();
A_v2 get_data_v2();
A_v3 get_data_v3();

/* Simple alias */
#define get_data get_data_v3
typedef struct A_v3 A;


Не очень красиво, но 100% ABI совместимо и переносимо. Даже больше - с этим решением можно в новых версиях переупорядочивать поля ничего не сломав.

Исправление former_anonymous, :

нет, тупо копируем структуры. Типа того


struct A_v1
{
    float f;
};

struct A_v2
{
    float f;
    char c;
};

struct A_v3
{
    float f;
    char c;
    int data;
};

A_v1 get_data_v1();
A_v2 get_data_v2();
A_v3 get_data_v3();

/* Simple alias */
#define get_data get_data_v3
typedef struct A_v3 A;


Не очень красиво, но 100% ABI совместимо и переносимо.

Исходная версия former_anonymous, :

нет, тупо копируем структуры. Типа того


struct A_v1
{
    float f;
};

struct A_v2
{
    float f;
    char c;
};

struct A_v3
{
    float f;
    char c;
    int data;
};

A_v1 get_data_v1();
A_v2 get_data_v2();
A_v3 get_data_v3();

/* Simple alias */
#define get_data get_data_v3


Не очень красиво, но 100% ABI совместимо и переносимо.