1*8a46d04dSKamlesh Gurudasani /* 2*8a46d04dSKamlesh Gurudasani * Copyright (c) 2025-2026 Texas Instruments Incorporated - https://www.ti.com 3*8a46d04dSKamlesh Gurudasani * 4*8a46d04dSKamlesh Gurudasani * SPDX-License-Identifier: BSD-3-Clause 5*8a46d04dSKamlesh Gurudasani */ 6*8a46d04dSKamlesh Gurudasani 7*8a46d04dSKamlesh Gurudasani /* 8*8a46d04dSKamlesh Gurudasani * Build-Time Assertions 9*8a46d04dSKamlesh Gurudasani * 10*8a46d04dSKamlesh Gurudasani * This header provides a macro for performing compile-time assertions and 11*8a46d04dSKamlesh Gurudasani * validation of constant expressions during the build process. 12*8a46d04dSKamlesh Gurudasani */ 13*8a46d04dSKamlesh Gurudasani 14*8a46d04dSKamlesh Gurudasani #ifndef TI_BUILD_ASSERT_H 15*8a46d04dSKamlesh Gurudasani #define TI_BUILD_ASSERT_H 16*8a46d04dSKamlesh Gurudasani 17*8a46d04dSKamlesh Gurudasani /* 18*8a46d04dSKamlesh Gurudasani * Compile-time assertion that evaluates to zero 19*8a46d04dSKamlesh Gurudasani * 20*8a46d04dSKamlesh Gurudasani * Similar to CASSERT (include/lib/cassert.h) but differs in that it evaluates 21*8a46d04dSKamlesh Gurudasani * to zero, making it usable inline within expressions. CASSERT generates a 22*8a46d04dSKamlesh Gurudasani * typedef statement and cannot be used inside an expression. 23*8a46d04dSKamlesh Gurudasani * 24*8a46d04dSKamlesh Gurudasani * If the condition is false, the array has negative size causing a compilation 25*8a46d04dSKamlesh Gurudasani * error. If true, evaluates to zero (sizeof(char[1]) - 1). Useful in macro 26*8a46d04dSKamlesh Gurudasani * expressions where a build-time check is needed without affecting the value. 27*8a46d04dSKamlesh Gurudasani */ 28*8a46d04dSKamlesh Gurudasani #define TI_BUILD_ASSERT_OR_ZERO(cond) \ 29*8a46d04dSKamlesh Gurudasani (sizeof(char[(cond) ? 1 : -1]) - 1) 30*8a46d04dSKamlesh Gurudasani 31*8a46d04dSKamlesh Gurudasani #endif /* TI_BUILD_ASSERT_H */ 32