mbed library sources

Fork of mbed-src by mbed official

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers mbed_assert.h Source File

mbed_assert.h

00001 /* mbed Microcontroller Library
00002  * Copyright (c) 2006-2013 ARM Limited
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *     http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 #ifndef MBED_ASSERT_H
00017 #define MBED_ASSERT_H
00018 
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif
00022 
00023 /** Internal mbed assert function which is invoked when MBED_ASSERT macro failes.
00024  *  This function is active only if NDEBUG is not defined prior to including this
00025  *  assert header file.
00026  *  In case of MBED_ASSERT failing condition, the assertation message is printed
00027  *  to stderr and mbed_die() is called.
00028  *  @param expr Expresion to be checked.
00029  *  @param file File where assertation failed.
00030  *  @param line Failing assertation line number.
00031  */
00032 void mbed_assert_internal(const char *expr, const char *file, int line);
00033 
00034 #ifdef __cplusplus
00035 }
00036 #endif
00037 
00038 #ifdef NDEBUG
00039 #define MBED_ASSERT(expr) ((void)0)
00040 
00041 #else
00042 #define MBED_ASSERT(expr)                                \
00043 do {                                                     \
00044     if (!(expr)) {                                       \
00045         mbed_assert_internal(#expr, __FILE__, __LINE__); \
00046     }                                                    \
00047 } while (0)
00048 #endif
00049 
00050 #endif