如何在空主函数中打印Hello World

时间:2018-02-20 16:44:57

标签: c++ c main

我遇到了一件有趣的事情。在一次采访中,我被要求将“Hello World”打印到控制台。但主要功能必须是:

int main(void) 
{
    return 0;
}

不得修改!

8 个答案:

答案 0 :(得分:10)

我试过#define return printf("Hello World"); 使用C ++和MinGW GCC。 即使这样没有风格;)

答案 1 :(得分:7)

class TEST{
public:
    TEST(){
        cout << "Hello World";
    }
};
TEST test_obj; //Create an instnace to TEST Class

int main(){
    return 0;
}

答案 2 :(得分:6)

NeverToLow beat me to it.

这适用于C或C ++(当然,在任何一种语言中都是非常糟糕的风格):

#include <stdio.h> 
#define return puts("Hello World");
int main(void) {
    return 0;
}

宏定义中的分号是必要的。它导致以下0;成为语句表达式,它不执行任何操作。 (从main的末尾开始,在C ++中执行隐式return 0;,在C开头执行C99。)

答案 3 :(得分:4)

重新定义return的宏方法很不错但有一些缺点,因为它不严格符合c89标准并产生一些警告:

> gcc -std=c89 -Wall test.c
test.c: In function 'main':
test.c:7:12: warning: statement with no effect [-Wunused-value]
     return 0;
            ^
test.c:8:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^

现在我们可以从这个方法派生出来,重新定义main,然后重新定义一个未使用的函数

#include "stdio.h"

#define main(x) main(x) { printf("Hello world\n"); return 0; } int foo()

int main(void) 
{
    return 0;
}

预处理器输出:

int main(void) { printf("Hello world\n"); return 0; } int foo()
{
    return 0;
}

现在程序编译没有警告,使用c89标准,并且不重新定义关键字。

答案 4 :(得分:1)

您可以在main之前定义一个函数,并传递一个构造函数以打印Hello World。

#include<bits/stdc++.h>
using namespace std;
class print{
    print(){
        cout << "Hello World";
    }
};
print obj;

int main(){
    return 0;
}

您还可以使用宏预处理器(定义宏)。

#include<bits/stdc++.h>
using namespace std;

#define return printf("Hello World");

int main(){
    return 0;
}

答案 5 :(得分:1)

您可以将其链接到共享库,并在Windows下将return printf("Hello World");放在DLLmain中,或者在Linux下使用选项-init,DLLMain进行编译。

答案 6 :(得分:0)

您可以将该功能移动到初始化代码中。例如,在C ++中,您可以声明类的静态实例,然后在类构造函数中打印该消息。

或者,您可以通过#pragma包含一个库,并在&#34; loading&#34;中执行该代码。事件: https://stackoverflow.com/a/9759936/1964969

答案 7 :(得分:-1)

你可以通过创建一个类来简单地做到这一点。在这段代码中,我们在 HelloWorld 类中创建了一个构造函数,该构造函数将打印 Hello World,因此每当我们创建类 HelloWorld 的对象时。编译器将检查 HelloWorld 类中写入的内容,当它看到该类中有构造函数时,它将检查该构造函数中写入的内容。我们已经编写了打印 HelloWorld 的代码。因此,由于我们的构造函数,它将使该对象打印 Hello World。我希望这段代码和解释对你有帮助

#include <bits/stdc++.h>
using namespace std;

class HelloWorld
{
public:

HelloWorld()
{
    cout << "Hello World" << endl;  
}

};

HelloWorld obj;

int main()
{
return 0;
}