Ответ 1
Посмотрите на определение этой структуры в clnt.h
:
typedef struct CLIENT CLIENT;
struct CLIENT {
AUTH *cl_auth; /* authenticator */
struct clnt_ops {
enum clnt_stat (*cl_call) (CLIENT *, u_long, xdrproc_t, caddr_t, xdrproc_t, caddr_t, struct timeval);
/* ...*/
} *cl_ops;
/* ...*/
};
Как вы можете видеть, struct clnt_ops
определяется внутри struct CLIENT
. Итак, для этого типа в С++ это CLIENT::clnt_ops
. В C, однако, нет такой вещи, как вложенные структуры, поэтому она видна просто struct clnt_ops
.
Если вы хотите быть переносимым, вы можете добавить что-то по строкам:
#ifdef __cplusplus
typedef CLIENT::clnt_ops clnt_ops;
#else
typedef struct clnt_ops clnt_ops;
#endif
clnt_ops tcp_nb_ops = ...;
Но я думаю, что этот тип просто не предназначен для непосредственного использования клиентским кодом. Вместо этого используйте только struct CLIENT
.