读书人

include,该怎么解决

发布时间: 2013-01-17 10:28:54 作者: rapoo

include
EXEC SQL include 和 include 有什么区别?
[解决办法]
EXEC SQL INCLUDE SQLCA;
#include <sqlca.h>

这个效果是一样的。

但是二者还是有所不同
#include "foo.h"
在C的预处理阶段才会处理foo.h, 所以foo.h里只能有c的语句

EXEC SQL INCLUDE "foo.h"
在ESQL预处理阶段就会处理 foo.h, 所以 foo.h 里可以有 ESQL语句

下面的例子里需要在ESQL语句里使用foo.h定义的一个结构体,所以在foo.h里是有ESQL语句的,所以在foo.c里需要用
EXEC SQL INCLUDE "foo.h";
不能用
#include "foo.h"


/**
* @file foo.h
* @brief
*/

EXEC SQL BEGIN DECLARE SECTION;
struct foo {
char name[10 + 1];
int count;
};
EXEC SQL END DECLARE SECTION;



/**
* @file foo.ec
* @brief
*/

EXEC SQL INCLUDE "foo.h";

int main(int argc, char *argv[])
{
EXEC SQL BEGIN DECLARE SECTION;
struct foo foo;
EXEC SQL END DECLARE SECTION;

EXEC SQL SELECT COUNT(*) INTO :foo.count FROM T;

return 0;
}

读书人网 >C语言

热点推荐