Emacs http://www.gnu.org/software/emacs/
Source-Navigator 5.2b2 http://sourceforge.net/projects/sourcenav
Anjuta http://anjuta.sourceforge.net(可用yum安装)
代码索引工具
Cscope http://cscope.sourceforge.net/
KScope http://www.kde-apps.org
GLOBAL http://www.gnu.org/software/global/(可用yum安装)
调试器(GNU gdb的GUI前端)
DDD http://www.gnu.org/software/ddd/
Insight 6.4.0 http://sourceware.org/insight/
KDbg http://www.kdbg.org/
评测器(内存、性能、覆盖等的profiler,类似IBM Purify)
Valgrind http://www.valgrind.org/,FC5自带3.1.0-2
ggcov(GNU gcov的GUI) http://ggcov.sourceforge.net/
kprof(GNU gprof的GUI) http://kprof.sourceforge.net/
KCachegrind http://kcachegrind.sf.net
BoundsChecking http://www.doc.ic.ac.uk/~phjk/BoundsChecking
代码静态检查工具(类似Windows平台的PC-Lint)
Splint http://www.splint.org/(可用yum安装)
flawfinder http://www.dwheeler.com/flawfinder/
代码静态测量工具
--暂缺,Windows上非开源的LineCount(http://liangs.autodebug.com/)统计C/C++/Java代码还凑合。
PyMetrics(http://sourceforge.net/projects/pymetrics/)测量Python代码复杂度。
http://www.chris-lott.org/resources/cmetrics/罗列了好些C static metric tools。
软件构建系统(build system)
SCons http://www.scons.org/(用yum安装的版本太低)
CMake http://www.cmake.org/
GNU Make http://www.gnu.org/software/make/
交叉工具链
crosstool http://www.kegel.com/crosstool/
代码版本控制系统及相关工具
Subversion http://subversion.tigris.org (用yum安装)
WorkBench http://pysvn.tigris.org/(pysvn的附带物)
StatSvn http://svn.statsvn.org/
mpy-svn-stats http://mpy-svn-stats.berlios.de/
ViewVC http://viewvc.tigris.org/
测试框架
CppUnit http://sourceforge.net/projects/cppunit
CUnit http://cunit.sourceforge.net/
代码差异工具(比较/制作和应用补丁)
GNU diffutils http://www.gnu.org/software/diffutils/
kdiff3 http://kdiff3.sourceforge.net/或者http://www.kde-apps.org(可用yum安装)
代码在线文档
doxygen http://www.stack.nl/~dimitri/doxygen/
离线文档
DocBook http://www.docbook.org
XMLMind http://www.xmlmind.com/
代码格式化
astyle(Artistic Style) http://astyle.sourceforge.net/
indent http://www.gnu.org/software/indent/
UML建模
ArgoUML http://argouml.tigris.org
软件工程事务(BUG等)跟踪(类似IBM ClearQuest)
Trac http://trac.edgewall.org/(基于Pythyon,用yum安装)--感觉和BugFree一样小巧
BugFree http://www.1zsoft.com/(基于PHP+MySQL)--中小规模软件适用
BugZilla http://www.bugzilla.org/--配置复杂,使用麻烦
自动化持续构建与测试系统(类似IBM BuildForge)
BuildBot http://buildbot.sourceforge.net/(基于Python)
Cabie http://cabie.tigris.org/(基于Perl和MySQL)
系统级别测试框架
DejaGNU http://www.gnu.org/software/dejagnu/(基于Expect,因而基于Tcl)
QMTest http://www.codesourcery.com/qmtest/(基于Python)
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define MY_PRINT(i) \
do {\
printf("%d\n", i);\
} while(0)
int main()
{
int i=9;
MY_PRINT(i);
return 0;
}
在那里打个空格就可以了,为什么?
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define MY_PRINT(i) \ //*呀,这里怎么有个()还有个/啊?*//
do {\ //*这里怎么也有个/啊?它起什么作用?*//
printf("%d\n", i);\ //*这里也是,/是起什么作用?*//
} while(0)
int main()
{
int i=9;
MY_PRINT(i);
return 0;
}
----------------解决方案--------------------------------------------------------
带参数的宏加分行
它相当于
#define MY_PRINT(i) do {printf("%d\n", i);} while(0)
那样写好看,思路清晰。
----------------解决方案--------------------------------------------------------
嘿嘿,就是说“/”其实就没什么作用了?
问下,宏加了参数,有什么用?怎么使用啊?谢谢回复!
----------------解决方案--------------------------------------------------------
晕,书没看透的家伙。。和函数差不多,但又不太一样。。
自己看书,给你个例子
#define ADD(x) (x)+(x) /* 带参数的宏 ,注意括号,为什么自己看书.*/
int main()
{int a=1,b=2,c;
c=3*(ADD(a+b));
printf("%d\n",c);
return 0;
}
随手写的,不知道有错没。。
----------------解决方案--------------------------------------------------------
呀,我看潭浩强的那本书,预处理命令和宏还没看到呢!
不过很谢谢你啊!呵呵!
你的程序是不是可以这样?
#define ADD(x) (x)+(x) //*这里是不是有点错!如果是X+X的话,下面就是a+a了!*//
int main()
{int a=1,b=2,c;
c=3*(ADD(a)); //*是不是可以这样改?上面是x+x嘛!现在就是1+1了!你下面用a+b……*//
printf("%d\n",c);
return 0;
}
还有哦!
#include <stdio.h>
#define MY_PRINT(i) \ //这里宏有个参数
do {\
printf("%d\n", i);\
} while(0)
int main()
{
int i=9;
MY_PRINT(i); //调用的是MY_PRINT(9); 这个程序有什么用啊?怎么使用宏以后,什么都没有做,就返回0?
return 0;
}
----------------解决方案--------------------------------------------------------
1、这里是别人的帖子。。。
2、我再说下去,宏那一章节你就不用看了,我也累死了
看完书啥都明白了。
----------------解决方案--------------------------------------------------------
我收藏先,看完不懂的话,我在来问啊!LS的谢谢了啊!非常感谢!
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define MY_PRINT(i) do{printf("%d\n",i);}while(0)
int main()
{
int i=9;
MY_PRINT(i);
return 0;
}
----------------解决方案--------------------------------------------------------