Stop doing this:
using namespace std;
see: Why is "using namespace std;" considered bad practice? Why is "using namespace std;" considered bad practice?
These two are not unique to the class.
string in{ ">>" };
string out{ "<<" };
May as well make them static
. Also they re never modified so make them const
.
No need to force a flush with std::endl
cout << in << name << endl;
Prefer "\n"
when you don't need a flush (also cerr or clog may be better choices of output stream).
That seems like an overly verbose and error prone way of use.
void generic_function() {
functionlogging logger{ __func__ };
You have to use up a variable and remember __func__
. Can't we get a macro in here to do all the for you? I actually need to look up to see if func is a standard macro.
Just checked the standard:
8.4.1 In general
Paragrah 8:
The function-local predefined variable __func__ is defined as if a definition of the form
static const char __func__[] = "function-name ";
So I would define the macros:
#define LOG_ENTRY_EXIT_FOR(x) functionlogging SomeLongNameThatIsNotLikelyToBeUsedInTheFunctionlogger(x)
#define LOG_ENTRY_EXIT LOG_ENTRY_EXIT_FOR(__func__)
Then usage is simply:
void generic_function() {
LOG_ENTRY_EXIT;
int a = 10;
int b = 100;
a += b;
}
Stop doing this:
using namespace std;
see: Why is "using namespace std;" considered bad practice?
These two are not unique to the class.
string in{ ">>" };
string out{ "<<" };
May as well make them static
. Also they re never modified so make them const
.
No need to force a flush with std::endl
cout << in << name << endl;
Prefer "\n"
when you don't need a flush (also cerr or clog may be better choices of output stream).
That seems like an overly verbose and error prone way of use.
void generic_function() {
functionlogging logger{ __func__ };
You have to use up a variable and remember __func__
. Can't we get a macro in here to do all the for you? I actually need to look up to see if func is a standard macro.
Just checked the standard:
8.4.1 In general
Paragrah 8:
The function-local predefined variable __func__ is defined as if a definition of the form
static const char __func__[] = "function-name ";
So I would define the macros:
#define LOG_ENTRY_EXIT_FOR(x) functionlogging SomeLongNameThatIsNotLikelyToBeUsedInTheFunctionlogger(x)
#define LOG_ENTRY_EXIT LOG_ENTRY_EXIT_FOR(__func__)
Then usage is simply:
void generic_function() {
LOG_ENTRY_EXIT;
int a = 10;
int b = 100;
a += b;
}
Stop doing this:
using namespace std;
see: Why is "using namespace std;" considered bad practice?
These two are not unique to the class.
string in{ ">>" };
string out{ "<<" };
May as well make them static
. Also they re never modified so make them const
.
No need to force a flush with std::endl
cout << in << name << endl;
Prefer "\n"
when you don't need a flush (also cerr or clog may be better choices of output stream).
That seems like an overly verbose and error prone way of use.
void generic_function() {
functionlogging logger{ __func__ };
You have to use up a variable and remember __func__
. Can't we get a macro in here to do all the for you? I actually need to look up to see if func is a standard macro.
Just checked the standard:
8.4.1 In general
Paragrah 8:
The function-local predefined variable __func__ is defined as if a definition of the form
static const char __func__[] = "function-name ";
So I would define the macros:
#define LOG_ENTRY_EXIT_FOR(x) functionlogging SomeLongNameThatIsNotLikelyToBeUsedInTheFunctionlogger(x)
#define LOG_ENTRY_EXIT LOG_ENTRY_EXIT_FOR(__func__)
Then usage is simply:
void generic_function() {
LOG_ENTRY_EXIT;
int a = 10;
int b = 100;
a += b;
}
Stop doing this:
using namespace std;
see: Why is "using namespace std;" considered bad practice?
These two are not unique to the class.
string in{ ">>" };
string out{ "<<" };
May as well make them static
. Also they re never modified so make them constconst
.
No need to force a flush with std::endl
cout << in << name << endl;
Prefer "\n"
when you don't need a flush (also cerr or clog may be better choices of output stream).
That seems like an overly verbose and error prone way of use.
void generic_function() {
functionlogging logger{ __func__ };
You have to use up a variable and remember __func__
. Can't we get a macro in here to do all the for you? I actually need to look up to see if func is a standard macro.
Just checked the standard:
The function-local predefined variable func is defined as if a definition of the form
8.4.1 In general
Paragrah 8:
The function-local predefined variable __func__ is defined as if a definition of the form
static const char __func__[] = "function-name ";
So I would define the macros:
#define LOG_ENTRY_EXIT_FOR(x) functionlogging SomeLongNameThatIsNotLikelyToBeUsedInTheFunctionlogger(x)
#define LOG_ENTRY_EXIT LOG_ENTRY_EXIT_FOR(__func__)
Then usage is simply:
void generic_function() {
LOG_ENTRY_EXIT;
int a = 10;
int b = 100;
a += b;
}
Stop doing this:
using namespace std;
see: Why is "using namespace std;" considered bad practice?
These two are not unique to the class.
string in{ ">>" };
string out{ "<<" };
May as well make them static
. Also they re never modified so make them const.
No need to force a flush with std::endl
cout << in << name << endl;
Prefer "\n"
when you don't need a flush (also cerr or clog may be better choices of output stream).
That seems like an overly verbose and error prone way of use.
void generic_function() {
functionlogging logger{ __func__ };
You have to use up a variable and remember __func__
. Can't we get a macro in here to do all the for you? I actually need to look up to see if func is a standard macro.
Just checked the standard:
The function-local predefined variable func is defined as if a definition of the form
static const char __func__[] = "function-name ";
So I would define the macros:
#define LOG_ENTRY_EXIT_FOR(x) functionlogging SomeLongNameThatIsNotLikelyToBeUsedInTheFunctionlogger(x)
#define LOG_ENTRY_EXIT LOG_ENTRY_EXIT_FOR(__func__)
Then usage is simply:
void generic_function() {
LOG_ENTRY_EXIT;
int a = 10;
int b = 100;
a += b;
}
Stop doing this:
using namespace std;
see: Why is "using namespace std;" considered bad practice?
These two are not unique to the class.
string in{ ">>" };
string out{ "<<" };
May as well make them static
. Also they re never modified so make them const
.
No need to force a flush with std::endl
cout << in << name << endl;
Prefer "\n"
when you don't need a flush (also cerr or clog may be better choices of output stream).
That seems like an overly verbose and error prone way of use.
void generic_function() {
functionlogging logger{ __func__ };
You have to use up a variable and remember __func__
. Can't we get a macro in here to do all the for you? I actually need to look up to see if func is a standard macro.
Just checked the standard:
8.4.1 In general
Paragrah 8:
The function-local predefined variable __func__ is defined as if a definition of the form
static const char __func__[] = "function-name ";
So I would define the macros:
#define LOG_ENTRY_EXIT_FOR(x) functionlogging SomeLongNameThatIsNotLikelyToBeUsedInTheFunctionlogger(x)
#define LOG_ENTRY_EXIT LOG_ENTRY_EXIT_FOR(__func__)
Then usage is simply:
void generic_function() {
LOG_ENTRY_EXIT;
int a = 10;
int b = 100;
a += b;
}
Stop doing this:
using namespace std;
see: Why is "using namespace std;" considered bad practice?
These two are not unique to the class.
string in{ ">>" };
string out{ "<<" };
May as well make them static
. Also they re never modified so make them const.
No need to force a flush with std::endl
cout << in << name << endl;
Prefer "\n"
when you don't need a flush (also cerr or clog may be better choices of output stream).
That seems like an overly verbose and error prone way of use.
void generic_function() {
functionlogging logger{ __func__ };
You have to use up a variable and remember __func__
. Can't we get a macro in here to do all the for you? I actually need to look up to see if func is a standard macro.
Just checked the standard:
The function-local predefined variable func is defined as if a definition of the form
static const char __func__[] = "function-name ";
So I would define the macros:
#define LOG_ENTRY_EXIT_FOR(x) functionlogging SomeLongNameThatIsNotLikelyToBeUsedInTheFunctionlogger(x)
#define LOG_ENTRY_EXIT LOG_ENTRY_EXIT_FOR(__func__)
Then usage is simply:
void generic_function() {
LOG_ENTRY_EXIT;
int a = 10;
int b = 100;
a += b;
}
Stop doing this:
using namespace std;
see: Why is "using namespace std;" considered bad practice?
These two are not unique to the class.
string in{ ">>" };
string out{ "<<" };
May as well make them static
. Also they re never modified so make them const.
No need to force a flush with std::endl
cout << in << name << endl;
Prefer "\n"
when you don't need a flush (also cerr or clog may be better choices of output stream).
That seems like an overly verbose and error prone way of use.
void generic_function() {
functionlogging logger{ __func__ };
You have to use up a variable and remember __func__
. Can't we get a macro in here to do all the for you? I actually need to look up to see if func is a standard macro.
Stop doing this:
using namespace std;
see: Why is "using namespace std;" considered bad practice?
These two are not unique to the class.
string in{ ">>" };
string out{ "<<" };
May as well make them static
. Also they re never modified so make them const.
No need to force a flush with std::endl
cout << in << name << endl;
Prefer "\n"
when you don't need a flush (also cerr or clog may be better choices of output stream).
That seems like an overly verbose and error prone way of use.
void generic_function() {
functionlogging logger{ __func__ };
You have to use up a variable and remember __func__
. Can't we get a macro in here to do all the for you? I actually need to look up to see if func is a standard macro.
Just checked the standard:
The function-local predefined variable func is defined as if a definition of the form
static const char __func__[] = "function-name ";
So I would define the macros:
#define LOG_ENTRY_EXIT_FOR(x) functionlogging SomeLongNameThatIsNotLikelyToBeUsedInTheFunctionlogger(x)
#define LOG_ENTRY_EXIT LOG_ENTRY_EXIT_FOR(__func__)
Then usage is simply:
void generic_function() {
LOG_ENTRY_EXIT;
int a = 10;
int b = 100;
a += b;
}