1bdbfc3c2SDan Handley /* 2bdbfc3c2SDan Handley * Copyright (c) 2014, ARM Limited and Contributors. All rights reserved. 3bdbfc3c2SDan Handley * 4*82cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 5bdbfc3c2SDan Handley */ 6bdbfc3c2SDan Handley 7bdbfc3c2SDan Handley #ifndef __CASSERT_H__ 8bdbfc3c2SDan Handley #define __CASSERT_H__ 9bdbfc3c2SDan Handley 10bdbfc3c2SDan Handley /******************************************************************************* 11bdbfc3c2SDan Handley * Macro to flag a compile time assertion. It uses the preprocessor to generate 12bdbfc3c2SDan Handley * an invalid C construct if 'cond' evaluates to false. 13bdbfc3c2SDan Handley * The following compilation error is triggered if the assertion fails: 14bdbfc3c2SDan Handley * "error: size of array 'msg' is negative" 15c17a4dc3SSandrine Bailleux * The 'unused' attribute ensures that the unused typedef does not emit a 16c17a4dc3SSandrine Bailleux * compiler warning. 17bdbfc3c2SDan Handley ******************************************************************************/ 18c17a4dc3SSandrine Bailleux #define CASSERT(cond, msg) \ 1965cd299fSSoren Brinkmann typedef char msg[(cond) ? 1 : -1] __unused 20bdbfc3c2SDan Handley 21bdbfc3c2SDan Handley #endif /* __CASSERT_H__ */ 22