|
发表于 2005-8-17 15:19:09
|
显示全部楼层
Post by dieken_qfz
对于C++和C来说, 效率取决于数据结构和算法以及编译器的实现, 往往C的初手写的代码效率不怎样. 除非是拿C++当C用,或者是巨简单的程序,否则C++的初手写出来的东西效率更差。数据结构和算法可以使效率成指数倍提高,但是因为C++的封装浪费的时间,用C来避免这些可以提速20%以上,甚至可以到50%。
Post by dieken_qfz
UNIX一系列一直都是C一统天下, 而且C++的标准出来比较晚, 而且语法比C复杂了不止一倍两倍, 高手用C++能写出简洁高效漂亮的代码, 可惜绝大部分人都不是C++高手。 C确实比C++早出来几年,但是C++肯定比Linus开始写Linux早,也比Windows出来的早。这些写操作系统的不用C++肯定还是钟情于C的效率。就像那个变态John Carmack,就是不用C++。
Post by dieken_qfz
其实觉得大部分人也不是C高手。 完全同意。
Post by dieken_qfz
这几天看到一段宏,挺好玩的:
extern int add(int x, int y);
#define add(...) (trace("add(%d, %d)\n", __VA_ARGS__), add(__VA_ARGS__))
#define trace(...) (fprintf(stderr, "[%s:%d:%s]", __FILE__, __LINE__, __func__), \
fprintf(stderr, __VA_ARGS__), fflush(stderr))
这样在调用add(1, 2)时会打印出跟踪信息:
[hello.c:24:main]add(1, 2)
好处是不用修改.c文件就可以知道在什么地方调用了add,参数是什么。 这样的宏在Linux内核代码里比比皆是,就是利用了编译器定义的一些宏而已。 |
|