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, error() is called with the assertation message.
00027  *  @param expr Expresion to be checked.
00028  *  @param file File where assertation failed.
00029  *  @param line Failing assertation line number.
00030  */
00031 void mbed_assert_internal(const char *expr, const char *file, int line);
00032 
00033 #ifdef __cplusplus
00034 }
00035 #endif
00036 
00037 #ifdef NDEBUG
00038 #define MBED_ASSERT(expr) ((void)0)
00039 
00040 #else
00041 #define MBED_ASSERT(expr)                                \
00042 do {                                                     \
00043     if (!(expr)) {                                       \
00044         mbed_assert_internal(#expr, __FILE__, __LINE__); \
00045     }                                                    \
00046 } while (0)
00047 #endif
00048 
00049 #endif