[Bug 205251] <rpc/clnt.h> and rpc_createerr macro
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Fri Dec 11 20:33:51 UTC 2015
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=205251
Bug ID: 205251
Summary: <rpc/clnt.h> and rpc_createerr macro
Product: Base System
Version: 10.2-RELEASE
Hardware: i386
OS: Any
Status: New
Severity: Affects Many People
Priority: ---
Component: kern
Assignee: freebsd-bugs at FreeBSD.org
Reporter: dramigan at gmail.com
I've just installed FreeBSD 10.2 in order to determine the portability of my
companies code. Built gcc4.6 out of the ports/lang area, but see the same
issue using /usr/bin/cc (clang 3.4.1).
in /usr/include/rpc/clnt.h the following snippet:
/*
* If a creation fails, the following allows the user to figure out why.
*/
struct rpc_createerr {
enum clnt_stat cf_stat;
struct rpc_err cf_error; /* userful when cf_stat == RPC_PMAPFAILURE */
};
__BEGIN_DECLS
extern struct rpc_createerr *__rpc_createeer(void); __END_DECLS #define
rpc_createerr (*(__rpc_createeerr()))
Note that the #define becomes active once the file is included, and in my
source code I have multiple
struct rpc_createerr *ce;
declarations. Both cc and gcc cite this as an error, though for different
reasons.
gcc complains that a '(' is found where a '{' is expected.
The cc error message is 'error: declaration of anyonymous struct must be a
definition'.
My other ports - Linux, AIX, Solaris, Mac OSX, do not have the #define in
/usr/include/rpc/clnt.h.
The HP-UX does, but it is encapsulated within a #ifdef _REENTRANT / #endif
block.
Is this an actual error, or is there something on FreeBSD that I need to do
that is different than the other platforms?
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list