我遇到了一件有趣的事情。在一次采访中,我被要求将“Hello World”打印到控制台。但主要功能必须是:
int main(void)
{
return 0;
}
不得修改!
答案 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)
这适用于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;
}