CDEFS(3) | Library Functions Manual | CDEFS(3)

# NAME

`cdefs` — common definitions and macros

# SYNOPSIS

`#include <sys/cdefs.h>`

# DESCRIPTION

The `<sys/cdefs.h>` header includes some common definitions and macros typical to the C language conventions of NetBSD. Among these are:

- Certain C language properties and definitions that are versioned according to the support in compilers. Examples include the __func__ keyword and the restrict type qualifier from C99.
- Macros and definitions specific to compilers, preprocessors, and linkers; see __BIT(3), __BITS(3), __CONCAT(3), __FPTRCAST(3), __SHIFTIN(3), __SHIFTOUT(3), __SHIFTOUT_MASK(3), __UNCONST(3), __UNVOLATILE(3), __USE(3), __insn_barrier(3), and attribute(3).
- Utility macros provided for convenience; see __arraycount(3) and bits(3).

The header also contains the `__RCSID`() and `__KERNEL_RCSID`() macros used for version control system (VCS) identifiers. Thus, all NetBSD source code files typically include `<sys/cdefs.h>`, included as the first thing right after any possible copyright texts;

    /*-
     * Copyright (c) 1984 John Doe
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms,
     * with or without modification, are permitted.
     */

    #include <sys/cdefs.h>
    __RCSID("$NetBSD: cdefs.3,v 1.5 2019/11/10 18:45:09 christos Exp $");

It is possible to identify the RCS keyword strings by using ident(1).

# SEE ALSO

ident(1), param(3), stddef(3), types(3), c(7)

# HISTORY

The `<sys/cdefs.h>` header was originally imported from 386BSD.

November 10, 2019 | NetBSD 11.0