C/C++ faq 7月22日

发表于:2007-05-25来源:作者:点击数: 标签:问题7月22日分成C++
先简单把问题分成基本问题、普通问题和未解决问题 基本问题: 是最基本的问题入门者常问 1。xzh2002问:关于指针数组和指针变量 -------------------------------------------------------------------------------- int*a[n]和int(*a)[n]的区别 li2002答:

先简单把问题分成基本问题、普通问题和未解决问题
基本问题:
是最基本的问题 入门者常问
1。xzh2002问:关于指针数组和指针变量    
--------------------------------------------------------------------------------
 int *a[n]和int (*a)[n]的区别
li2002  答:
一个是指针数组,一个是数组指针,以前有贴子详细讨论过。
wangrujun答:http://chinaunix.net/forum/viewtopic.php?t=104435&highlight=wangrujun

2。发表主题: unix下怎么用c创建二进制格式文件?    
--------------------------------------------------------------------------------
 unix下,wb好象是没有作用了 

smartfox答:用给予文件描述符的IO阿 
需要包含头文件: 
#include <unistd.h>
#include <sys/types.h> 
#include <sys/stat.h> 
#include <fcntl.h> 
用Creat(const char* patchname,mode_t mode); 
创建 
二进制文件的定义是按信息再内存中的格式直接表示的,所以文件具体结构需要自己设计,和创建文本文件一样都是用 
write(int fd,void* buf,size_t count); 
fd为创建,打开文件时的描述符,要想写入2进制数据文件必须以写或读写的形式打开,我省略了打开文件的系统调用您可以自己查找相关帮助手册

穷惯了答:很多UNIX系统中wb 和w 是一回事....



普通问题:
涉及到某些专门知识
1。ccrazy问:   ccrazy 发表主题: netterm设置问题    
--------------------------------------------------------------------------------
我用的netterm在shell状态下敲入字符时,老是敲一个字符出现两个同样的字符,请问是不是我的netterm设置有问题,我该如何改过来,谢谢!!
    
gadfly答:
选项-》桌面设置-》线条控制-》本地端回应 
去掉打勾就好

2。suberg问:发表主题: hp-ux下用gcc编译程序出错    
--------------------------------------------------------------------------------
 在hp-ux下用gcc编译程序,有如下错误: 
/usr/include/sys/socket.h:439: parse error before "sendfile" 
/usr/include/sys/socket.h:440: parse error before "bsize_t" 
/usr/include/sys/socket.h:441: parse error before "sendpath" 
/usr/include/sys/socket.h:442: parse error before "bsize_t" 
 
gadfly答:在gcc的编译选项中加上-D_XOPEN_SOURCE_EXTENDED 
应该就可以了

suberg问:老问题解决了,但连接的是后出错: 
/usr/ccs/bin/ld: Unsatisfied symbols: 
ntohl (code)

gadfly答:你man ntohl可以看到 
引用: 
[code:1:213865f3fe]
These routines convert 16- and 32-bit quantities between network byte 
order and host byte order. On HP-UX systems, network and host byte 
orders are identical, so these routines are defined as null macros in 
the include file <netinet/in.h>. If _XOPEN_SOURCE_EXTENDED is defined then these routines are defined in the include file <arpa/inet.h>. 
[/code:1:213865f3fe]
所以你把<arpa/inet.h>include试试看 

3。troustrup发表主题: 打印设置,郁闷    
打印机初始设置一页22英寸,现想设置成12英寸 
lq-1900k手册: 
格式: 
ASCII 码 ESC C NUL n 
十进制 码 27 67 0 n 
十六进制 1B 43 00 n 
解释: 
将页长设为 n 英寸,其值为1英寸到22英寸。当前行即为页顶位置。 
我是这样写的: 
fprintf(fp, "%c%c%c%c", 27, 67, 0, 14); 
fp为一临时文件; 
可打印该文件时,换页不对,不是12英寸一页。 
屡试不行,郁闷。 

li2002答:标准打印纸长度11英寸,非22英寸,建议楼主翻一下小学课本,查一查1英寸=?cm。 
fprintf(fp, "%c%c%c%d", 27, 67, 0, 0x0b);

 odin_free 回复于:2003-07-25 20:34:37
4。发表主题: 多线程调试出错!    
我在SCO UNIX5.0.5下调试一个多线程并发服务器程序出错。 
其中有一条语句: static pthread_key_t key; 
错误提示: 
thrserver.c", line 27: error: syntax error, probably missing ",", ";" or "=" 
"thrserver.c", line 27: error: Syntax error before or at: key 
"thrserver.c", line 27: warning: declaration missing specifiers: assuming "int" 
不知道是什么原因 

无双答:syntax error??? 
这还没有通过编译呢 
根据提示修改吧

5。ohwww 发表主题: pro*c中跟oracle断开连接该怎么做??? 
我只看到关于怎么连接数据库的说明,可是我想在使用完后,马上就断开连接,该怎么做???用exit就可以吗??

无双答:EXEC SQL COMMIT RELEASE; 
不使用COMMIT可能也行 但是最好提交自己事务
release就是断开,没有它不断开

6。ohwww发表主题: 怎么在proc中同时连接几个数据库???? 
数据库都是oracle库.现在的程序中,我在连接到一个新数据库后,原来的连接自动就断开了,可是我需要按顺序从不同的库中取数据,这样就可能出现一个库需要在不同的地方连接几次的情况
评:虽然没有解决问题,但是相关讨论还是很好
http://www.chinaunix.net/forum/viewtopic.php?t=117130

7。jsean发表主题: 为何我的tuxedo客户端并发调用tpconnect就连接失败呢?    
并且还经常导致程序出现异常呢? 
我的环境是winxp, tuxedo6.4吧 
开发环境是vc多线程,单线程一点问题都没有,急呀!!!!!!!!! 
服务端据说是没有问题。这是怎么回事呀!

lizhenjia答:tuxedo64?有这个版本吗? 
不过tuxedo只有71之后的版本才支持多线程!!

8。发表主题: 求助!! 关于string的使用!!! 
评:一些讨论详细见,算tc和c++的一些关系
http://www.chinaunix.net/forum/viewtopic.php?t=118430

9。发表主题: 那位大侠精通makefile文件能不能帮小弟看个文件
评:原文件过长
http://www.chinaunix.net/forum/viewtopic.php?t=119158

10。发表主题: 关于进程切换用户的问题    
我在一个服务器程序中,在产生子进程时,想把进程的权限也改成该用户权限,而且附上该用户名环境变量, 
我起先用setuid/seteuid来修改进程的用户ID和用户组ID,可是,我发现 
此进程还是具有父进程的权限, 
不知有何办法可以将此进程的状态设成用户状态

gadfly答:先setgid,再setuid,反了就不行了。
badeager答:原来,子进程的权限是与父进程有关系,在子进程里用setuid除非父进程已经推出或不在了,我只能重新创建一个进程,设为该用户的权限,然后由他来创建进程,问题就解决了! 
评:自己找到答案后,又来说明一下方便大家学习,感谢badeager!



未解决问题:
这里的帖子都是发问后经讨论但未完全解决的问题,大家继续解决,如果发问者自己找到答案,能把答案公布在这里,更好。
1。发表主题: 请问FreeBSD下如何取得CPU频率? 
http://www.chinaunix.net/forum/viewtopic.php?t=119475
2。发表主题: aix4.3 的stl问题    
http://www.chinaunix.net/forum/viewtopic.php?t=120490
3。发表主题: 紧急求救!!输入问题?? 
http://www.chinaunix.net/forum/viewtopic.php?t=116578
4。发表主题: ncurses 求助:我的程序要求执行之前保存原有的屏幕 
退出后又把起始的屏幕恢复。 
http://www.chinaunix.net/forum/viewtopic.php?t=120245
5。下面是sock_packet关于发送的程序:请高手指点一下 
http://www.chinaunix.net/forum/viewtopic.php?t=119337

总结:第一次整理文档,为了方便阅读,去掉了很多我认为无关的回帖,由于我水平有限,难免存在很多断章取义的地方,如果发现请将直接改正的帖子或者有其他任何建议的帖子跟在这个帖子后面,都是为了学习正确,万勿客气。

 无双 回复于:2003-07-25 21:07:41
OK

先设为精华 以后再统一整理  连精华中的贴子内容重复的也一起整理

 odin_free 回复于:2003-07-26 13:26:23
本日推荐:
最基本的c问题,解决了500个左右这样的问题,c基本就算入门了,可以较快的写一些错误少的程序。
1。xzh2002问:关于指针数组和指针变量 
-------------------------------------------------------------------------------- 
int *a[n]和int (*a)[n]的区别 
li2002 答: 
一个是指针数组,一个是数组指针,以前有贴子详细讨论过。 
wangrujun答:http://chinaunix.net/forum/viewtopic.php?t=104435&highlight=wangrujun

 li2002 回复于:2003-07-28 11:04:14
真热心啊,不错,支持一下!!

原文转自:http://www.ltesting.net

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)