mysql源文件的压缩文件mysql-5.7.12.tar.gz有48.2Mb,这么大个家伙。
以前学c语言什么的,觉得尼玛个臭c可以干嘛呀,敢看了源文件我彻底震精了,光是一个THD类的说明就占了3000多行,
留我风中凌乱,感慨人类软件工程之伟大,喂猫本科不是或者读研不是学计算机捏。
直接去看局部的类的话肯定要看晕,所以感觉是不是从主线入手好点呢,从驱动程序main先入手吧,然后找到了解压后mysql-5.7.12\sql的mysql.cc,
结果找了半天,个鬼int main( )都没有看到就看到了这个:
int mysqld_main(int argc, char **argv)
我想,这驱动程序或者入口程序不应该是int main( )么,后来上网一查main( )函数尼玛在\sql\main.cc中定义的。
之前自己闷头看源码,结果太复杂,又没有上网查查资料,搞得闹笑话了。
main.cc的源代码很简单,就是一个调用mysqld_main( )的过程:
/* main() for mysqld. Calls mysqld_main() entry point exported by sql library. 这里是调用mysqld_main()的入口点,终于把你给抓到了 */ extern int mysqld_main(int argc, char **argv); // 声明在别处存在这个函数mysqld_main() int main(int argc, char **argv) { return mysqld_main(argc, argv); // 调用mysqld_main() }
当我感叹main.cc简单的时候,mysqld.cc毫不留情的扇了我一巴掌,大概是9300行,腻酿哦!
头文件mysqld.h大概是980行,里面有好多好多的声明。
mysqld.cc中有两个mysqld_main( )函数
写到这不得不停下来,c基础不好,要去看下ifdef,ifndef什么的。
时间: 2024-10-08 11:20:05