1bdbfc3c2SDan Handley /* 293c78ed2SAntonio Nino Diaz * Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved. 3bdbfc3c2SDan Handley * 482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 5bdbfc3c2SDan Handley */ 6bdbfc3c2SDan Handley 7*c3cf06f1SAntonio Nino Diaz #ifndef CASSERT_H 8*c3cf06f1SAntonio Nino Diaz #define CASSERT_H 9bdbfc3c2SDan Handley 1093c78ed2SAntonio Nino Diaz #include <cdefs.h> 1193c78ed2SAntonio Nino Diaz 12bdbfc3c2SDan Handley /******************************************************************************* 13bdbfc3c2SDan Handley * Macro to flag a compile time assertion. It uses the preprocessor to generate 14bdbfc3c2SDan Handley * an invalid C construct if 'cond' evaluates to false. 15bdbfc3c2SDan Handley * The following compilation error is triggered if the assertion fails: 16bdbfc3c2SDan Handley * "error: size of array 'msg' is negative" 17c17a4dc3SSandrine Bailleux * The 'unused' attribute ensures that the unused typedef does not emit a 18c17a4dc3SSandrine Bailleux * compiler warning. 19bdbfc3c2SDan Handley ******************************************************************************/ 20c17a4dc3SSandrine Bailleux #define CASSERT(cond, msg) \ 2165cd299fSSoren Brinkmann typedef char msg[(cond) ? 1 : -1] __unused 22bdbfc3c2SDan Handley 23*c3cf06f1SAntonio Nino Diaz #endif /* CASSERT_H */ 24