in c++ main function is the entry point to program how i can change it to an other function?

Viewed 49991

I was asked an interview question to change the entry point of a C or C++ program from main() to any other function. How is it possible?

13 Answers

It's very simple:

As you should know when you use constants in c, the compiler execute a kind of 'macro' changing the name of the constant for the respective value.

just include a #define argument in the beginning of your code with the name of start-up function followed by the name main:

Example:

#define my_start-up_function (main)

Changing a value in Linker Settings will override the entry point. i.e., MFC applications use a value of 'Windows (/SUBSYSTEM:WINDOWS)' to change entry point from main() to CWinApp::WinMain().

Right clicking on solution > Properties > Linker > System > Subsystem > Windows (/SUBSYSTEM:WINDOWS)

...

Very practical benefit to modifying entry point:

MFC is a framework we take advantage of to write Windows applications in C++. I know it's ancient, but my company maintains one for legacy reasons! You will not find a main() in MFC code. MSDN says the entry point is WinMain(), instead. Thus, you can override the WinMain() of your base CWinApp object. Or, most people override CWinApp::InitInstance() because the base WinMain() will call it.

Disclaimer: I use empty parentheses to denote a method, without caring how many arguments.

Related