C/C++ line number
You should use the preprocessor macro __LINE__
and __FILE__
. They are predefined macros and part of the C/C++ standard. During preprocessing, they are replaced respectively by a constant string holding an integer representing the current line number and by the current file name.
Others preprocessor variables :
__func__
: function name (this is part of C99, not all C++ compilers support it)__DATE__
: a string of form "Mmm dd yyyy"__TIME__
: a string of form "hh:mm:ss"
Your code will be :
if(!Logical) printf("Not logical value at line number %d in file %s\n", __LINE__, __FILE__);
As part of the C++ standard there exists some pre-defined macros that you can use. Section 16.8 of the C++ standard defines amongst other things, the __LINE__
macro.
__LINE__
: The line number of the current source line (a decimal constant).__FILE__
: The presumed name of the source file (a character string literal).__DATE__
: The date of translation of the source file (a character string literal...)__TIME__
: The time of translation of the source file (a character string literal...)__STDC__
: Whether__STDC__
is predefined__cplusplus
: The name__cplusplus
is defined to the value 199711L when compiling a C ++ translation unit
So your code would be:
if(!Logical) printf("Not logical value at line number %d \n",__LINE__);
You could use a macro with the same behavior as printf(), except that it also includes debug information such as function name, class, and line number:
#include <cstdio> //needed for printf#define print(a, args...) printf("%s(%s:%d) " a, __func__,__FILE__, __LINE__, ##args)#define println(a, args...) print(a "\n", ##args)
These macros should behave identically to printf(), while including java stacktrace-like information. Here's an example main:
void exampleMethod() { println("printf() syntax: string = %s, int = %d", "foobar", 42);}int main(int argc, char** argv) { print("Before exampleMethod()...\n"); exampleMethod(); println("Success!");}
Which results in the following output:
main(main.cpp:11) Before exampleMethod()...
exampleMethod(main.cpp:7) printf() syntax: string = foobar, int = 42
main(main.cpp:13) Success!