summaryrefslogtreecommitdiff
path: root/include/sys/cdefs.h
blob: 7df9f1e52ad4c6082f8f24ba4d35350a8b968c40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

#ifndef __SYS_CDEFS_H
#define __SYS_CDEFS_H
#include <features.h>

#if defined (__STDC__) && __STDC__

#define	__CONCAT(x,y)	x ## y
#define	__STRING(x)	#x

/* This is not a typedef so `const __ptr_t' does the right thing.  */
#define __ptr_t void *

#else

#define	__CONCAT(x,y)	x/**/y
#define	__STRING(x)	"x"

#define __ptr_t char *

#endif

/* C++ needs to know that types and declarations are C, not C++.  */
#ifdef  __cplusplus
# define __BEGIN_DECLS  extern "C" {
# define __END_DECLS    }
#else
# define __BEGIN_DECLS
# define __END_DECLS
#endif

/* GNUish things */
#define __CONSTVALUE
#define __CONSTVALUE2

#ifdef __GNUC__
/* GCC can always grok prototypes.  For C++ programs we add throw()
   to help it optimize the function calls.  But this works only with
   gcc 2.8.x and egcs.  */
#if defined __cplusplus && __GNUC_PREREQ (2,8)
#define __THROW		throw()
#else
#define __THROW
#endif
#else /* GCC */
#define __THROW
#endif

#endif