各位高手,我在编译C代码时报错,不懂错误原因,请各位指点。
db2inst1@vmhost:~/usr> make
db2 connect to sample user tsp30 using tsp30
Database Connection Information
Database server = DB2/LINUX 10.1.0
SQL authorization ID = TSP30
Local database alias = SAMPLE
db2 "prep demo.sqc bindfile preprocessor 'gcc -I/home/db2inst1/sqllib/include -DDEBUG -E -o demo.i'"
LINE MESSAGES FOR demo.sqc
------ --------------------------------------------------------------------
SQL0060W The "C" precompiler is in progress.
36 SQL4001N The character "? in column "19" on line "36" is
not valid.
SQL0095N No bind file was created because of previous
errors.
SQL0091W Precompilation or binding was ended with "2"
errors and "0" warnings.
make: *** [demo] Error 4
------最佳解决方案--------------------------------------------------------
没加过中文,你看看是不是上传的时候,变乱码了。或者,你直接在服务器上改一下。
------其他解决方案--------------------------------------------------------
你看看那行是不是有非法字符,windows和unix的不一样。
------其他解决方案--------------------------------------------------------
29 ret = connectdb(dbname, user, passwd);
30 if (SQLCODE)
31 {
32 fprintf(stderr, "connect db %d\n", SQLCODE);
33 return -1;
34 }
35
36 fprintf(stderr, "测试connect db success\n");
37
------其他解决方案--------------------------------------------------------
第36行因为有中文,这个是我写的一个DEMO程序,想测试宏定义DEBUG
按网上提示编译时候加preprocessor选项,可以对宏进行预编译
但是代码中只要出现中文,就会报上面的错误。
如果不加preprocessor选项,编译:
db2 prep demo.sqc bindfile
db2 bindfile demo.bnd
就不会报错。
------其他解决方案--------------------------------------------------------
我已经搞定了,是数据库本身设置问题