IBM Support

CBC1090(S) - Syntax errors in pthread.h

Technote (troubleshooting)


User compiling with the OS390 2.10 compiler started to receive syntax errors in pthread.h.
The following error messages were received during the compile.
"CEE.SCEEH.H(PTHREAD)", line 242.53: CBC1090(S) Syntax error - expected "expression" and found ")". "CEE.SCEEH.H(PTHREAD)", line 243.60: CBC1090(S) Syntax error - expected "expression" and found ")".
"CEE.SCEEH.H(PTHREAD)", line 248.31: CBC1013(S) Identifier "pthread_t" is undefined. .... etc.
In Addition: Using z/OS C/C++ Compile a CCN5827 error was reported in limits.h when system header files were included prior to define for _OPEN_THREADS


The cause of the problem was the location of the define for _OPEN_THREADS needed for pthread. Its #define must be first.

Resolving the problem

Move the #define _OPEN_THREADS to the top of the source program or use the compiler option DEF(_OPEN_THREADS). Defines such as these are best placed ahead of any include files used by the application. Note that a similar problem may be seen on releases of the compiler after OS390 2.10.0.

This rule is documented in the C/C++ Runtime Library Reference. It has a section on using Feature Test Macros and mentions using defines prior to including any header files.

Cross Reference information
Segment Product Component Platform Version Edition
Software Development OS/390 C/C++ z/OS 2.10

Document information

More support for: z/OS XL C/C++

Software version: 1.9, 1.10, 1.11, 1.12

Operating system(s): z/OS

Reference #: 1008795

Modified date: 18 January 2008

Translate this page: