Program name: Difference between revisions
(Added C++ example) |
|||
Line 3: | Line 3: | ||
=={{header|C}}== |
=={{header|C}}== |
||
C |
It might not be very useful for a C program to access source filenames, because C code must be compiled into an executable, and anything could have happened to the source file after the compilation. However, C can access the executable's filename. |
||
<lang c>#include <stdio.h> |
<lang c>#include <stdio.h> |
||
Line 10: | Line 10: | ||
printf("Executable: %s\n", argv[0]); |
printf("Executable: %s\n", argv[0]); |
||
return 0; |
|||
}</lang> |
|||
To get the source information about some part of code, use compiler defined macros. Most compilers support them or some variation of. |
|||
<lang c>#include <stdio.h> |
|||
int main() |
|||
{ |
|||
printf("This code was in file %s in function %s, at line %d\n", |
|||
__FILE__, __FUNCTION__, __LINE__); |
|||
return 0; |
return 0; |
||
}</lang> |
}</lang> |
Revision as of 00:08, 6 August 2011
It is useful to programmatically access a program's name, e.g. for determining whether the user ran "python hello.py", or "python hellocaller.py", a program importing the code from "hello.py".
C
It might not be very useful for a C program to access source filenames, because C code must be compiled into an executable, and anything could have happened to the source file after the compilation. However, C can access the executable's filename.
<lang c>#include <stdio.h>
int main(int argc, char **argv) { printf("Executable: %s\n", argv[0]);
return 0; }</lang>
To get the source information about some part of code, use compiler defined macros. Most compilers support them or some variation of. <lang c>#include <stdio.h>
int main() { printf("This code was in file %s in function %s, at line %d\n", __FILE__, __FUNCTION__, __LINE__); return 0; }</lang>
C++
C++ has difficulty accessing source code filenames, because C code must be compiled into an executable. However, C++ can access the executable's filename.
<lang cpp>#include <iostream>
using namespace std;
int main(int argc, char **argv) { cout << "Executable: " << argv[0] << endl;
return 0; }</lang>