Daniele Nicolodi wrote:
> Hello. I'm compiling my programs with the -std=c99 switch. However the
> inclusion of pthread.h from xenomai distribution causes the compilation
> to fail with syntax errors.
> 
> This simple program demonstrates the problem:
> 
> #include <pthread.h>
> 
> int main(int argc, char **argv)
> {
>      return 0;
> }
> 
> If I compile it with 'gcc -std=c99 $(xeno-config --posis-cflags)' i
> obtain the following errors:
> 
> In file included from /usr/include/xenomai/nucleus/trace.h:52,
>                  from /usr/include/xenomai/nucleus/system.h:27,
>                  from /usr/include/xenomai/asm/xenomai/system_32.h:130,
>                  from /usr/include/xenomai/asm/xenomai/system.h:2,
>                  from /usr/include/xenomai/nucleus/types.h:40,
>                  from /usr/include/xenomai/nucleus/thread.h:25,
>                  from /usr/include/xenomai/posix/pthread.h:136,
>                  from test-c99.c:1:
> /usr/include/xenomai/asm/xenomai/syscall.h:130: error: expected
> declaration specifiers or ‘...’ before string constant
> /usr/include/xenomai/asm/xenomai/syscall.h:130: warning: data definition
> has no type or storage class
> /usr/include/xenomai/asm/xenomai/syscall.h:130: warning: type defaults
> to ‘int’ in declaration of ‘asm’
> /usr/include/xenomai/asm/xenomai/syscall.h: In function ‘__xn_get_ebp’:
> /usr/include/xenomai/asm/xenomai/syscall.h:173: warning: statement with
> no effect
> /usr/include/xenomai/asm/xenomai/syscall.h:173: error: expected ‘;’
> before ‘volatile’
> /usr/include/xenomai/asm/xenomai/syscall.h: In function ‘__xn_rdtsc’:
> /usr/include/xenomai/asm/xenomai/syscall.h:436: warning: statement with
> no effect
> /usr/include/xenomai/asm/xenomai/syscall.h:436: error: expected ‘;’
> before ‘volatile’
> In file included from /usr/include/xenomai/nucleus/system.h:27,
>                  from /usr/include/xenomai/asm/xenomai/system_32.h:130,
>                  from /usr/include/xenomai/asm/xenomai/system.h:2,
>                  from /usr/include/xenomai/nucleus/types.h:40,
>                  from /usr/include/xenomai/nucleus/thread.h:25,
>                  from /usr/include/xenomai/posix/pthread.h:136,
>                  from test-c99.c:1:
> /usr/include/xenomai/nucleus/trace.h: In function ‘xntrace_max_begin’:
> /usr/include/xenomai/nucleus/trace.h:56: error: expected ‘;’ before
> ‘volatile’
> /usr/include/xenomai/nucleus/trace.h:56: warning: statement with no effect
> /usr/include/xenomai/nucleus/trace.h: In function ‘xntrace_max_end’:
> /usr/include/xenomai/nucleus/trace.h:61: error: expected ‘;’ before
> ‘volatile’
> /usr/include/xenomai/nucleus/trace.h:61: warning: statement with no effect
> /usr/include/xenomai/nucleus/trace.h: In function ‘xntrace_max_reset’:
> /usr/include/xenomai/nucleus/trace.h:66: error: expected ‘;’ before
> ‘volatile’
> /usr/include/xenomai/nucleus/trace.h:66: warning: statement with no effect
> /usr/include/xenomai/nucleus/trace.h: In function ‘xntrace_user_start’:
> /usr/include/xenomai/nucleus/trace.h:71: error: expected ‘;’ before
> ‘volatile’
> /usr/include/xenomai/nucleus/trace.h:71: warning: statement with no effect
> /usr/include/xenomai/nucleus/trace.h: In function ‘xntrace_user_stop’:
> /usr/include/xenomai/nucleus/trace.h:76: error: expected ‘;’ before
> ‘volatile’
> /usr/include/xenomai/nucleus/trace.h:76: warning: statement with no effect
> /usr/include/xenomai/nucleus/trace.h: In function ‘xntrace_user_freeze’:
> /usr/include/xenomai/nucleus/trace.h:81: error: expected ‘;’ before
> ‘volatile’
> /usr/include/xenomai/nucleus/trace.h:81: warning: statement with no effect
> /usr/include/xenomai/nucleus/trace.h: In function ‘xntrace_special’:
> /usr/include/xenomai/nucleus/trace.h:87: error: expected ‘;’ before
> ‘volatile’
> /usr/include/xenomai/nucleus/trace.h:87: warning: statement with no effect
> /usr/include/xenomai/nucleus/trace.h: In function ‘xntrace_special_u64’:
> /usr/include/xenomai/nucleus/trace.h:92: error: expected ‘;’ before
> ‘volatile’
> /usr/include/xenomai/nucleus/trace.h:92: warning: statement with no effect
> 
> Of course i do not obtain any error it i remove the xenomai specific
> include directories options from the gcc command line.
> 
> Can this problem be solved? Can I help somehow?

What version of Xenomai, what platforms? Chances are that Xenomai
headers contain inline assembly code and things like that which are
definitely not ansi, and we even use GNU extensions. I am afraid you
will have to compile with -std=gnu99.

It probably can be made to work. But... do you realy need -std=c99 ?

-- 
                                            Gilles.


_______________________________________________
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help

Reply via email to