Current Path : /usr/src/contrib/sendmail/libsm/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/src/contrib/sendmail/libsm/cdefs.html |
<html> <head> <title>libsm : C Language Portability Macros</title> </head> <body> <a href="index.html">Back to libsm overview</a> <center> <h1> libsm : C Language Portability Macros </h1> <br> $Id: cdefs.html,v 1.2 2000/12/07 17:33:09 dmoen Exp $ </center> <h2> Description </h2> The header file <tt><sm/cdefs.h></tt> defines portable interfaces to non-portable features of various C compilers. It also assists you in writing C header files that are compatible with C++. <dl> <dt> <tt> __P(parameterlist) </tt> <dd> This macro is used to write portable function prototypes. For example, <blockquote><pre> int foo __P((int)); </pre></blockquote> <dt> <tt> __CONCAT(x,y) </tt> <dd> This macro concatenates two tokens x and y, forming a single token xy. Warning: make sure there is no white space around the arguments x and y. <p> <dt> <tt> __STRING(x) </tt> <dd> This macro converts the token sequence x into a string literal. <p> <dt> <tt> __BEGIN_DECLS, __END_DECLS </tt> <dd> These macros are used to write C header files that are compatible with C++ compilers. Put <tt>__BEGIN_DECLS</tt> before the first function or variable declaration in your header file, and put <tt>__END_DECLS</tt> after the last function or variable declaration. <p> <dt> <tt> const, signed, volatile </tt> <dd> For pre-ANSI C compilers, <tt>const</tt>, <tt>signed</tt> and <tt>volatile</tt> are defined as empty macros. This means you can use these keywords without introducing portability problems. <p> <dt> <tt> SM_DEAD(function_declaration) </tt> <dd> This macro modifies a prototype of a function that does not return to its caller. With some versions of gcc, this will result in slightly better code, and can suppress some useless warnings produced by gcc -Wall. For example, <blockquote><pre> SM_DEAD(void exit __P((int))); </pre></blockquote> <dt> <tt> SM_UNUSED(variable_declaration) </tt> <dd> This macro modifies a definition of an unused local variable, global variable or function parameter in order to suppress compiler warnings. Examples: <blockquote><pre> SM_UNUSED(static const char Id[]) = "@(#)$Id: cdefs.html,v 1.2 2000/12/07 17:33:09 dmoen Exp $"; void foo(x) SM_UNUSED(int x); { SM_UNUSED(int y) = 0; return 0; } void bar(SM_UNUSED(int x)) { return 0; } </pre></blockquote> </dl> </body> </html>