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程序的变量定义必须在所有函数之前?!
    
     
	
	
    
    
	相关文档:
        
    
    问题源于论坛的一道题目:
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执行的问题上,到底先执行谁,后执行谁, 还有部分 ......
	
    
        
    
    原帖一: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 ......
	
    
        
    
    (注,本文是翻译的http://www.cprogramming.com/
上的文章 Where C and C++ Differ 
)
C++基于C,也保留了C的大部分特性。但是在源码级上有些地方是与C不兼容的。
C程序员使用C++时的陷阱
从 void* 的隐式分配
不能从 void* 隐式地分配到其他任何类型。例如,下面的代码在C中是非常有效的。
    in ......
	
    
        
    
    今天在VS2005调试一个C# C/S程序,当通过RFC与SAP连接时间过长时,出现此错误,在网上找到解决办法。
VS2008上的一个程序,通过Oracle.DataAccess.dll执行drop user
cascade操作,我在sqlplus执行此操作大约需要一分钟左右时间,当我在VS2008中debug启动此程序时,一直接收到
“ContextSwitchDeadlock is detected& ......
	
    
        
    
    http://demonstyle.blog.163.com/blog/static/13143429020091010112159/
C/C++ 宏详解
ic/c++ 2009-11-10 01:12:15 阅读18 评论0 字号:大中小 
众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有
一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型 ......