This file should only be included to find deprecated calls to the C library. More...
#include <cctype>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <cwchar>
#include <cwctype>
#include "forwarddeclarations.h"
#include "macros.h"
Go to the source code of this file.
Namespaces | |
smash | |
Macros | |
#define | SMASH_DEPRECATE_NONSTD(fun__) |
This macro is used to define functions that are in the C library and in the std namespace. More... | |
This file should only be included to find deprecated calls to the C library.
It should not be included in default builds since it slows down compilation.
Definition in file deprecate_c_functions.h.
#define SMASH_DEPRECATE_NONSTD | ( | fun__ | ) |
This macro is used to define functions that are in the C library and in the std namespace.
If a call to such a function without explicit namespace qualification is made it will then call the function from the smash namespace. Since the functions here are marked as deprecated they issue a warning if some code tries to use a C library function call.
Rationale: Functions in the C library are not overloaded for different data types. Thus a call to e.g. x = abs(x)
with float x
is a call to x = static_cast<float>(abs(static_cast<double>(x)))
. These casts are executed implicitly and therefore not noticed if the cast was unintentional.
And then, of course, this is C++ code. The ability to call C functions exists in C++ because C headers should compile in C++. The only correct way to write C++ code is to use the C++ interface. This may enable additional optimization opportunities.
Definition at line 53 of file deprecate_c_functions.h.