我最近遇到了这个编译的代码,但运行了分段错误(g ++).这是topcoder topcoder配置文件的原始链接
#include <iostream>
int main = ( std::cout << "Hello world!\n", 42 );
Run Code Online (Sandbox Code Playgroud)
这也编译
int main=0;
Run Code Online (Sandbox Code Playgroud)
有人可以解释这个程序中发生了什么.使用g ++
ybu*_*ill 15
抱歉,您发布的代码不是有效的C++程序.有效的C++程序必须具有一个入口点,该入口点是main全局范围内的name函数,其中一个签名由标准规定.C++中最短的有效程序是:
int main(){}
Run Code Online (Sandbox Code Playgroud)
asc*_*ler 15
这都是愚蠢的游戏.两个程序都违反了"程序应包含一个名为main" 的全局函数的要求(3.6.1p1).这些程序可能会欺骗一些编译器,因为它们定义了一个符号main,但该符号根本不是一个函数!难怪当运行时尝试将该main符号用作函数时,至少其中一个崩溃.
托管实现中最短的有效C++ 03程序:
int main(){}
Run Code Online (Sandbox Code Playgroud)
小智 6
以下代码将起作用:
char main[]="\xb4\x00\xcd\x16\xcd\x20";
这将以下机器级代码分配给符号 main,它是一个字符数组。
mov ah,0
int 16h ; Wait for a keyboard input i.e getch();
int 20h ; Exit to DOS
Run Code Online (Sandbox Code Playgroud)
编译器看到一个符号 main 并正确编译代码。它将控制权传递给符号 main(这是 C/C++ 编译器的默认操作),在那里它找到机器代码。因此,它正确执行。
| 归档时间: |
|
| 查看次数: |
8089 次 |
| 最近记录: |