使用 include<con> “杀死“ 编译器

这篇博客介绍了在代码中使用#include<con>可能导致的编译器“卡死”现象。实际上,这是由于在Windows系统中,'con'是保留的设备文件名,表示标准输入输出,因此预处理器会等待用户输入。类似地,在Linux下使用#include</dev/console>也会产生相同的效果。了解这个陷阱对于避免不必要的调试时间至关重要。

一次尝试

  读者可以尝试如下代码,其中包含 #include <con>,不出意外的话你就"杀死"了你的编译器。

#include <con>
#include <stdio.h>
int main() {
	printf("Hello World!!!\n");
	return 0;
} 

原理

  运行了上面的代码,读者就会发现编译器没有反应了,编译器其实并不是真正意义上的"死掉"了,它只是在读取键盘。因为 con 是 Windows 保留文件名,表示标准输入输出,所以预处理器运行到这一行,就在等待你的键盘输入。类似的 Linux 下的 #include </dev/console> 有同样的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值