I have a function that requires different libraries depending on the values inserted into it, and to prevent different error messages in the log, i want to check if the library needed is included and if not to print an error message more specific than the standard ones.
Is there anyway of checking whether a library is included or not? Something like:
if(#include <iostream>)
{
//do this
}
EDIT:
Some more details.... i need to check for the libraries in order to know if i can use certain variable types into my code for example to know if i can use type string or if i should use type char[] instead (if the cstring library is used)
you can check if a specific header or macro definition for a given library is defined.
For example:
#ifdef BOOST_BUILD
#include "somebooststuff.h"
using namespace boost;
#else
#include "somestdstuff.h"
using namespace std;
#endif
where BOOST_BUILD
is boost version defined in makefile.
Now, if you want to check if for example header for std::string
is included, you can open this header and determine what definitions it contains. For example on my machine header for
#include <string>
contains:
//
// ISO C++ 14882: 21 Strings library
//
#ifndef _GLIBCXX_STRING
#define _GLIBCXX_STRING 1
#pragma GCC system_header
#include <bits/c++config.h>
#include <bits/stringfwd.h>
#include <bits/char_traits.h> // NB: In turn includes stl_algobase.h
#include <bits/allocator.h>
//...
so I can check if std::string
has been defined using:
#ifdef _GLIBCXX_STRING
//do this
#else
// do this
#endif
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With