Skip to content

LaoshuBaby/FuckCoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FuckCoder

Fuck ALL fucking mistakes in C/C++ !!!!

项目起因

这个项目的第一个Commit,还要追溯到笔者大二上学期的时候。算是很早以前的故事了。

刚刚结束了大一的C语言和ACM竞赛课,大二又迎来了数据结构。那时接触到的编程语言也只有C语言一种,因此算是半个C语言脑残粉吧。因为一直走的是OJ模式来考评,若是思维不能和队员那样全神贯注,或者机房电脑键盘难用手感欠佳,都可能为一个少敲符号多打字母忘改变量的小BUG埋下祸根。

显然,这些知识都是学过的,但正是这样的粗心小错误,才难以定位,才令人垂头丧气。多少次为一个指针的*或者&符号上下搜寻,多少次为一个[i]应该写作[j]而恼火,两个小时硬是改不出来一个低级错误。思维严密的欠缺,令人失落和迷茫。

但更令人大为光火的,便是自己不小心犯下的一些拼写错误了。诸如trueture不分,或者顺着英语单词的教诲把stdio.h拼成了studio.h,每次看见都容易产生从机房大楼上跳下去的冲动。

后来,在知乎上看到有一个神贴,原文已佚失不可考,但大意是作者的一个学弟请他调代码,意外发现每个文件都要加一行#include <1.h>,询问何故,意外发现收录了诸如mianviod等各种令人暴躁的拼写,可谓一劳永逸,自动纠错了。而且若是有着色的IDE,也能很明显看出这和一般变量的区别来。

基于此,为了保护新生的积极性不被挫伤,为了安抚和确保新生的心理健康,为了让这份不走寻常路的解决问题的精神传承下去,我写了这份头文件,并持续维护至今,试图将各种能令人怒锤键盘,大喊“草”字的拼写问题全面收录,试图朝着“一劳永逸”的基础上迈进。

而日常还有很多诸如if(a=b)这样虽然语法正确但语义必错误的语句,也是作为新生的自己常出错的,便试图做一套自动修正的工作。并参考fuckitpythe fuck命名为FuckCoder

在启动本项目的时候,还未真正理解程序是如何被计算机分析的,更不要说编译原理知识了。而如今JetBrains系列的IDE也已经能够很好的识别一些此类错误。但若是出于编译原理实验性玩具的角度来说,本项目亦存在一定的意义。

望读完这些琐碎语句的诸位,学业进步、事业有成、事事顺心!

目标定位

本项目旨在于更精确的修正C语言程序中所出现的各种难以定位的致命错误和部分虽然语法正确但将使执行不正常的错误

项目结构

本项目分为两部分,分别是HeaderAutoFixer

Header

Header为若干个C语言头文件,以.h后缀名结尾,满足最大兼容性

分别对应某一类的错误类型

AutoFixer

是一个对单个代码文件自动修正的工具

技术信息

标准:基于C++11编写,不引入过多modern C++的实验性特性。

构建:基于MSBuild构建,降低使用和编译门槛论。

错误处理:Exception和Status并存,暂不考虑Log,会在未来添加。

参数:fuck {{文件/文件夹}} (您亦可将其加入环境变量)

裸露文件

本项目共裸露三个文件

  • fuck.h
  • fuck.bat
  • fuck.sh

分别对应C语言的头文件、Windows的批处理文件、Unix的Shell脚本

考虑到Windows的编码情况,fuck.bat没有使用本项目统一的UTF-8编码,而是转为ANSI以保证命令提示符中的中文字符不会乱码