Question

What is the way to write a program meeting following requirements:

  1. Prints "Hello world!" to stdout;
  2. Has empty main (just returning 0) i.e.

    int main(int argc, char** argv) {
        return 0;
    }
    
  3. main must contain no additional code except for that above.

Was it helpful?

Solution

You can do this in different ways. Consider you have #include <iostream> then following methods should be placed before main.

  1. You may use macros, but the result is undefined as noticed in comments. So even if this is an easy way, it should never be used. I will still leave it here for completeness.

    #define return std::cout << "Hello world!"; return
    
  2. You may use static variable:

    int helloWorld() 
    { 
        std::cout << "Hello World"; 
        return 0; 
    }
    static int print = helloWorld();
    
  3. ... or even simpler:

    bool printed = std::cout << "Hello World";
    
  4. You can do same with object:

    struct hello
    {
        public:
            hello()
            {
                std::cout << "Hello, world!";
            }
    } world;
    

OTHER TIPS

struct Bob
{
    Bob()
    {
        printf("Hello world!");
    }
} bob;

int main()
{
}
  1. Object Instantiation:

    struct S
    {
        S() { std::cout << "Hello World!"; }
    } s;
    
    int main() { }
    
  2. Or in an expression:

    int i = ((std::cout << "Hello World\n"), 5);
    
    int main() { }
    
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top