Write a program that prints "GeeksforGeeks" with empty main() function. You are not allowed to write anything in main().
JAVA
C language
- One way of doing this is to apply GCC constructor attribute to a function so that it executes before main() (See this for details).
Output:C #include <stdio.h> /* Apply the constructor attribute to myStartupFun() so that it is executed before main() */ void myStartupFun(void) __attribute__((constructor)); /* implementation of myStartupFun */ void myStartupFun(void) { printf("GeeksforGeeks"); } int main() { }
GeeksforGeeks
- In linux, just override the default definition of _start() function so that it would work as a custom startup code. See this article to understand more.
Now compile this by following commandC #include <stdio.h> #include <stdlib.h> int main(void) { } // _start() function void _start(void) { printf("GeeeksforGeeks"); // Call main() function int var = main(); exit(var); }
gcc -nostartfiles -o file file.c
Output:GeeksforGeeks
C++ language
- The idea is to create a class, have a cout statement in constructor and create a global object of the class. When the object is created, constructor is called and "GeeksforGeeks" is printed.
Output:CPP #include <iostream> class MyClass { public: MyClass() { std::cout << "GeeksforGeeks"; } } m; int main() { }
GeeksforGeeks
- The idea is to create struct and use the same logic which is discussed in above. The reason is that struct and class in C++ are exactly the same data structure except struct default to public visibility while class defaults to private visibility
Output:CPP #include <iostream> struct Mystruct { Mystruct() { std::cout << "GeeksforGeeks"; } } obj; int main() {}
GeeksforGeeks
- By using global variable, idea is to initialise printf() function to global variable, but it will work only in C++ language as in C language we can’t initialise variable or expression like this to global variable.
Output:CPP #include <cstdio> int var = printf("GeeksforGeeks"); int main() { }
GeeksforGeeks
Java language
The idea is to use static block for printing, actually any static blocks declared outside the main() method in java is executed before the main method.class Myjava {
static
{
System.out.println("GeeksforGeeks");
}
public static void main(String args[])
{
}
}
Output:
GeeksforGeeks