В OpenSolaris ($ ^ O eq 'solaris', вер. 2.11) я пытаюсь построить модуль XS, который использует XPGv4v2 / Single Unix Spec. понимание struct msghdr
, особенно для опроса "вспомогательных данных".
Однако собственный perl (v5.8.4) был собран без необходимых определений, и поэтому struct msghdr
, видимый в моем XS-файле, является более старым, BSD-видом ::
#include "EXTERN.h"
#include "perl.h" /* older, "msg_accrights"-style msghdr now visible */
#include "XSUB.h"
....
struct msghdr m;
m.msg_control = buf; /* ERROR, structure has no member named "msg_control" */
....
Предоставление "правильных" #define
s (_XOPEN_SOURCE
и _XOPEN_SOURCE_EXTENDED
) нарушает сборку, поскольку она меняет очень многое, чего ожидал Perl.
Есть ли какой-нибудь элегантный способ, которым модуль XS может использовать определение структуры, которое я хотел бы?