📄 cdefs.h
字号:
/*
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
*
* By using this file, you agree to the terms and conditions set
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
* $Id: cdefs.h,v 1.1 2000/10/29 06:35:12 roesch Exp $
* @(#)cdefs.h 8.8 (Berkeley) 1/9/95
*/
#ifndef _CDEFS_H_
# define _CDEFS_H_
# if defined(__cplusplus)
# define __BEGIN_DECLS extern "C" {
# define __END_DECLS };
# else /* defined(__cplusplus) */
# define __BEGIN_DECLS
# define __END_DECLS
# endif /* defined(__cplusplus) */
/*
* The __CONCAT macro is used to concatenate parts of symbol names, e.g.
* with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
* The __CONCAT macro is a bit tricky -- make sure you don't put spaces
* in between its arguments. __CONCAT can also concatenate double-quoted
* strings produced by the __STRING macro, but this only works with ANSI C.
*/
# if defined(__STDC__) || defined(__cplusplus)
# define __P(protos) protos /* full-blown ANSI C */
# ifndef __CONCAT
# define __CONCAT(x,y) x ## y
# endif /* ! __CONCAT */
# define __STRING(x) #x
# ifndef __const
# define __const const /* define reserved names to standard */
# endif /* ! __const */
# define __signed signed
# define __volatile volatile
# if defined(__cplusplus)
# define __inline inline /* convert to C++ keyword */
# else /* defined(__cplusplus) */
# ifndef __GNUC__
# define __inline /* delete GCC keyword */
# endif /* ! __GNUC__ */
# endif /* defined(__cplusplus) */
# else /* defined(__STDC__) || defined(__cplusplus) */
# define __P(protos) () /* traditional C preprocessor */
# ifndef __CONCAT
# define __CONCAT(x,y) x/**/y
# endif /* ! __CONCAT */
# define __STRING(x) "x"
# ifndef __GNUC__
# define __const /* delete pseudo-ANSI C keywords */
# define __inline
# define __signed
# define __volatile
/*
* In non-ANSI C environments, new programs will want ANSI-only C keywords
* deleted from the program and old programs will want them left alone.
* When using a compiler other than gcc, programs using the ANSI C keywords
* const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
* When using "gcc -traditional", we assume that this is the intent; if
* __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
*/
# ifndef NO_ANSI_KEYWORDS
# define const /* delete ANSI C keywords */
# define inline
# define signed
# define volatile
# endif /* ! NO_ANSI_KEYWORDS */
# endif /* ! __GNUC__ */
# endif /* defined(__STDC__) || defined(__cplusplus) */
/*
* GCC1 and some versions of GCC2 declare dead (non-returning) and
* pure (no side effects) functions using "volatile" and "const";
* unfortunately, these then cause warnings under "-ansi -pedantic".
* GCC2 uses a new, peculiar __attribute__((attrs)) style. All of
* these work for GNU C++ (modulo a slight glitch in the C++ grammar
* in the distribution version of 2.5.5).
*/
# if !defined(__GNUC__) || __GNUC__ < 2 || \
(__GNUC__ == 2 && __GNUC_MINOR__ < 5)
# define __attribute__(x) /* delete __attribute__ if non-gcc or gcc1 */
# if defined(__GNUC__) && !defined(__STRICT_ANSI__)
# define __dead __volatile
# define __pure __const
# endif /* defined(__GNUC__) && !defined(__STRICT_ANSI__) */
# endif /* !defined(__GNUC__) || __GNUC__ < 2 || \ */
/* Delete pseudo-keywords wherever they are not available or needed. */
# ifndef __dead
# define __dead
# define __pure
# endif /* ! __dead */
#endif /* ! _CDEFS_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -