易截截图软件、单文件、免安装、纯绿色、仅160KB

c程序的变量定义必须在所有函数之前?!

用vc6新建了一个win32的控制台程序,调试一个直接插入排序的小程序,文件定义为.c文件,而不是一般使用的.cpp文件,代码段如下:
#include <stdio.h>
void inst(int* x,int n)
{
int i,j,t;
for(i=1; i<n; i++) /* i表示插入次数,共进行n-1次插入*/
{
t = x[i];
for(j=i-1; j>=0; j--) /* 寻找要插入t的位置*/
if(t < x[j]) /* 后移,空出位置*/
x[j+1] = x[j];
else
break; /* 找到位置时,退出循环*/
x[j+1] = t; /* 直接插入*/
}
return;
}
void main()
{
int a[10]={5,6,4,3,0,7,2,1,9,8};
inst(a,10);

for (int i=0;i<10;i++)
{
printf("a[%d]=%d \n",i,a[i]);
}

 
编译不通过,但是将文件后缀名改成.cpp就能运行通过。
 
最后发现将最后for函数体中的i的变量的定义移至inst(a,10)语句之前就能正常编译,看来c程序的变量定义必须在所有函数之前?!


相关文档:

C中括号优先级的思考

问题源于论坛的一道题目:
http://topic.csdn.net/u/20100216/21/ec98464e-a47e-4263-bb1c-a001e130ba87.html
下面是问题:
设int arr[]={6,7,8,9,10};
int *ptr=arr;
*(ptr++)+=123;
printf("%d,%d",*ptr,*(++ptr));
答案为什么是:8,8
问题的焦点也落在printf执行的问题上,到底先执行谁,后执行谁, 还有部分 ......

Objective C 2.0 属性(Property)

原帖一:http://blog.csdn.net/dotphoenix/archive/2009/05/20/4203075.aspx
原贴二:http://www.cocoachina.com/bbs/read.php?tid-8008.html
@property (参数) 类型 名字;
这里的参数主要分为三类:读写属性(readwrite/readonly),setter语意(assign/retain/copy)以及atomicity(nonatomic)。
assign/retain/copy ......

C和C++之间的不同

(注,本文是翻译的http://www.cprogramming.com/
上的文章 Where C and C++ Differ

C++基于C,也保留了C的大部分特性。但是在源码级上有些地方是与C不兼容的。
C程序员使用C++时的陷阱
从 void* 的隐式分配
不能从 void* 隐式地分配到其他任何类型。例如,下面的代码在C中是非常有效的。
    in ......

C# C/S程序出错:ContextSwitchDeadlock is detected

今天在VS2005调试一个C# C/S程序,当通过RFC与SAP连接时间过长时,出现此错误,在网上找到解决办法。
VS2008上的一个程序,通过Oracle.DataAccess.dll执行drop user
cascade操作,我在sqlplus执行此操作大约需要一分钟左右时间,当我在VS2008中debug启动此程序时,一直接收到
“ContextSwitchDeadlock is detected& ......

C/C++ 宏详解

http://demonstyle.blog.163.com/blog/static/13143429020091010112159/
C/C++ 宏详解
ic/c++ 2009-11-10 01:12:15 阅读18 评论0 字号:大中小
众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有
一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号