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