[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Чёртов язык Си!



yuri.nefedov@gmail.com writes:

> On Tue, 7 Oct 2014, Dmitrii Kashin wrote:
>
>>
>> Как бы это сказать помягче, что я в очередной раз удивился, потратил
>> время, открыл книжку, перечитал, и снова ничего не нашёл?
>>
>>
>
>   For example, given the declaration of point above,
>         struct point pt;
>   defines a variable pt which is a structure of type struct point.
>
>   А более подробное обсуждение, что такое declaration
>   содержится в 2.4.
>
>   Или я не понял вопроса. Что именно вы хотели найти?

Да, пожалуй.
Фишка в том, что можно написать в заголовке:
---------- point.h ----------
struct point;
struct point* point_constructor();
int point2number(struct point* p);
-----------------------------

В коде библиотеке вот можно написать вот так:
---------- point.c ----------
struct point
{
       int x;
       int y;
};

struct point*
point_constructor()
{
        struct point* p_ptr = malloc(sizeof(struct point));
        p_ptr->x = 1;
        p_ptr->y = 1;
        return p_ptr;        
};

int
point2number(struct point* p)
{
        return (p->x + p->y);
};
-----------------------------

После чего в какой-то другой программе воспользоваться этим как-то так:
---------- program.c ----------
include "point.h"

int
main(int argc, char* argvp[])
{
        struct point* PVAR;
        return point2number(PVAR);
};
-------------------------------

И оно будет работать.

Я не проверил этот код, а просто наскоро написал его в
редакторе. Смею надеяться, общую суть я передал.

Attachment: pgpw5VcgdnLJI.pgp
Description: PGP signature


Reply to: