第一个pro*C demo
该程序很简单,就是用C从ORACLE,把当前日期显示出来就OK,作为一个简单的DEMO
(一)写PRO*C
/*===========================================================================
* pro*c编译方法:
* 预编译 proc test.pc
* 编译 gcc -o test test.c $ORACLE_HOME/lib/libclntsh.so
* 作者 foxliu
* 时间 2009-10
*============================================================================*/
#include <stdio.h>
#include <sqlca.h>
int main(int argc,char **argv)
{
/*声明SQL变量*/
EXEC SQL BEGIN DECLARE SECTION;
/*VARCHAR预编译后为struct { unsigned short len; unsigned char arr[20];}*/
VARCHAR user[20],pass[20],tnsname[20];
char crruentDate[15];
EXEC SQL END DECLARE SECTION;
/*声明C变量*/
int i=0;
strcpy(user.arr,"dbrevass");
user.len=strlen((char *)user.arr);
strcpy(pass.arr,"dbrevass");
pass.len=strlen((char *)pass.arr);
strcpy(tnsname.arr,"wapp");
tnsname.len=strlen((char *)tnsname.arr);
/*Connect the DB*/
EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :tnsname;
/*printf("%d",sqlca.sqlcode);*/
/*游标声明*/
EXEC SQL declare emp_cursor cursor for
select sysdate from dual;
&n
相关文档:
C/C++是不检查数组下标是否越界的。
不检查下标是否越界可以有效提高程序运行的效率,因为如果你检查,那么编译器必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界,这就会导致程序的运行速度下降,所以为了程序的运行效率,C/C++才不检查下标是否越界。
  ......
转注:
今天有网友问到这个问题,于是在网上搜索了一下,转贴这此.
相似的太多了,出处不详.在此感谢原作者精彩讲解.
一、预备知识—程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类 ......
C中的可变参数研究
一. 何谓可变参数
int printf(const char* format, ...);
这是使用过C语言的人所再熟悉不过的printf函数原型,它的参数中就有固定参数format ......
预处理器(Preprocessor)
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在这想看到几件事情:
1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2). 懂得预处理器将为你计算常数表达式的值,因此,直接 ......