c++如何用向量来实现win7多用户同时登陆登陆

新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
空间积分0 信誉积分122 UID阅读权限10积分10帖子精华可用积分10 专家积分0 在线时间7 小时注册时间最后登录
白手起家, 积分 10, 距离下一级还需 190 积分
帖子主题精华可用积分10 专家积分0 在线时间7 小时注册时间最后登录
论坛徽章:0
请问如何用sendto实现sendmsg。网上查了一下二个函数,好像差不多,应该是可以用sendto来实现sendmsg的。
sendto的掉用形式:
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
& && && && && && && & const struct sockaddr *dest_addr, socklen_t addrlen);
sendmsg的掉用形式:
ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags);
这样写不知道对不对,请各位大大指点一下
ssize_t mysendmsg(int sockfd,const struct msghdr *msg,int flags)
& &&&void *
& &&&size_
& &&&struct sockaddr *dest_
& &&&socklen_
& &&&buf = msg.msg_iov-&iov_
& &&&len = msg.msg_iov-&iov_
& &&&dest_addr = msg.msg_
& &&&addrlen& &&&= msg.msg_
& && &return sendto(sockfd, buf, len,&&flags,dest_addr, addrlen);& &&&
其中struct msghdr *msg的主要成员如下:
msg.msg_name=NULL; 报文名称
msg.msg_namelen=0; 报文名称长度
msg.msg_iov=&&&报文收发向量指针
msg.msg_iovlen=1;&&报文收发向量数量
msg.msg_control=NULL; 报文控制块
msg.msg_controllen=0; 报文控制块长度
iov.iov_base= 收发向量数据区地址
iov.iov_len= 收发向量数据区长度
按这上写法,msg_control和msg_controllen 就没有用到了。不知道有没有问题。
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
空间积分0 信誉积分260 UID7240278阅读权限70积分5817帖子精华可用积分5817 专家积分35 在线时间1404 小时注册时间最后登录
富足长乐, 积分 5817, 距离下一级还需 2183 积分
帖子主题精华可用积分5817 专家积分35 在线时间1404 小时注册时间最后登录
论坛徽章:0
为什么要这么做呢?
请用你知道的去帮助别人,就像别人当初帮助你一样!
空间积分0 信誉积分120 UID阅读权限70积分6319帖子精华可用积分6319 专家积分0 在线时间4227 小时注册时间最后登录
富足长乐, 积分 6319, 距离下一级还需 1681 积分
帖子主题精华可用积分6319 专家积分0 在线时间4227 小时注册时间最后登录
论坛徽章:0
楼主的怀疑是正确的,实际上sendto()是由sendmsg()实现的,可能被参数的个数误导了
空间积分0 信誉积分122 UID阅读权限10积分10帖子精华可用积分10 专家积分0 在线时间7 小时注册时间最后登录
白手起家, 积分 10, 距离下一级还需 190 积分
帖子主题精华可用积分10 专家积分0 在线时间7 小时注册时间最后登录
论坛徽章:0
不会吧。sendto是用sendmsg实现的。
是这样的,我要移植一RTP程序到ucos上,UCOS上的tip/ip库只提供send和sendto,没有sendmsg函数。但是我要移值的rtp程序偏偏用到了sendmsg函数。
空间积分0 信誉积分122 UID阅读权限10积分10帖子精华可用积分10 专家积分0 在线时间7 小时注册时间最后登录
白手起家, 积分 10, 距离下一级还需 190 积分
帖子主题精华可用积分10 专家积分0 在线时间7 小时注册时间最后登录
论坛徽章:0
楼主的怀疑是正确的,实际上sendto()是由sendmsg()实现的,可能被参数的个数误导了
doofy 发表于
& & doofy老兄,能否帮忙看下下面这段带码里的sendmsg如何用sendto代替吗?谢谢!
rtperror RTPSendVector(context cid, int32 tsinc, int8 marker,
& & & & & & & & & & & & & & & & & & & &&&int16 pti, struct iovec *payload, int vec_count)
& & & & /* Our packet will be composed of vec_count + 2 buffers:
& & & & & & & &&&buffer 0 is the header
& & & & & & & &&&buffers 1 .. n-1 are the payload
& & & & & & & &&&buffer n is the payload padding */
& & & & struct iovec *
& & & & struct msghdr the_
& & & & int errchk, i, data_len,
& & & & address_holder_t *s, *
& & & & hl_context *
& & & & err = RTPSessionGetHighLevelInfo(cid, (void**)&uc);
& & & & if (err != RTP_OK)
& & & & & & & & /* The cid is bogus */
& & & & & & & &
& & & & if (uc-&PreventEntryIntoFlaggingFunctions)
& & & & & & & & return errordebug(RTP_CANT_CALL_FUNCTION, &RTPSendVector&,
& & & & & & & & & & & & & & & & & & & & &context %d, cannot be called now&,
& & & & & & & & & & & & & & & & & & & & (int)cid);
& & & & if(uc-&send_addr_list == NULL)
& & & & & & & & return errordebug(RTP_BAD_ADDR, &RTPSendVector&,
& & & & & & & & & & & & & & & & & & & & &context %d, no send addresses&,
& & & & & & & & & & & & & & & & & & & & (int)cid);
& & & & pktlen = vec_count + 2;
& & & & pktpart = (struct iovec *) calloc(sizeof(struct iovec), pktlen);
& & & & if (pktpart == NULL)
& & & & & & & & return errordebug(RTP_CANT_ALLOC_MEM, &RTPSendVector&,
& & & & & & & & & & & & & & & & & & & & &context %d, couldn't allocate iovec&,
& & & & & & & & & & & & & & & & & & & & (int)cid);
& & & & uc-&PreventEntryIntoFlaggingFunctions = TRUE;
& & & & data_len = 0;
& & & & for (i = 0; i & vec_ i++)
& & & & & & & & pktpart[i+1].iov_base = payload.iov_
& & & & & & & & pktpart[i+1].iov_len = payload.iov_
& & & & & & & & data_len += payload.iov_
& & & & & & & & /* octet count only measures the payload (no extension, no SSRC lists,
& & & & & & & & & & & &&&etc.) */
& & & & buflen = _RTP_MAX_PKT_SIZE;
& & & & err = RTPBuildRTPHeader(cid, tsinc, marker, pti, FALSE /* ... XXX encrypt */,
& & & & & & & & & & & & & & & & data_len, uc-&packet_buffer, &buflen);
& & & & if (err)
& & & & & & & &
& & & & pktpart[0].iov_base = uc-&packet_
& & & & pktpart[0].iov_len =
& & & & /* Add padding to the payload if necessary */
& & & & /* XXX encryption */
& & & & pktpart[pktlen-1].iov_base = NULL;
& & & & pktpart[pktlen-1].iov_len = 0;
& & & & /* XXX do encryption here */
& & & & /* Packet is not encrypted.& & & & Then it is ready to be sent.& & & & */
& & & & memset((char*) &the_message, 0, sizeof(the_message));
& & & & the_message.msg_name = (caddr_t) NULL;
& & & & the_message.msg_namelen = 0;
& & & & the_message.msg_iov =
& & & & the_message.msg_iovlen =
& & & & s = uc-&send_addr_
& & & & err = RTP_OK;
& & & & rundelete = FALSE;
& & & & while(s != NULL)
& & & & & & & & if(s-&deleteflag == FALSE)
& & & & & & & & {
& & & & & & & & & & & & errchk = sendmsg(s-&rtpsocket, (struct msghdr*)&the_message, 0);
& & & & & & & & & & & & if (errchk & 0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & err = errordebug(RTP_SOCKET_WRITE_FAILURE, &RTPSendVector&,
& & & & & & & & & & & &&&& & & & & & & & &context %d could not write to RTP socket&,& & & & (int)cid);
& & & & & & & & & & & & & & & & if (uc-&SendErrorCallBack != NULL)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & uc-&SendErrorCallBack(cid, inet_ntoa(s-&address), ntohs(s-&port), s-&ttl);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & if (s-&deleteflag == TRUE)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & rundelete = TRUE;
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }
& & & & & & & & }
& & & & & & & & else
& & & & & & & & {
& & & & & & & & & & & & rundelete = TRUE;
& & & & & & & & }
& & & & & & & & s = s-&
& & & & /* Now, we clean up the send list and remove all that have been deleted.
& & & & & & & &&&We know that this needs to be done if rundelete is TRUE */
& & & & prevs = NULL;
& & & & if(rundelete == TRUE)
& & & & & & & & s = uc-&send_addr_
& & & & & & & & while(s != NULL)
& & & & & & & & {
& & & & & & & & & & & & if(s-&deleteflag == TRUE)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & if(prevs == NULL)
& & & & & & & & & & & & & & & & & & & & uc-&send_addr_list = s-&
& & & & & & & & & & & & & & & & else
& & & & & & & & & & & & & & & & & & & & prevs-&next = s-&
& & & & & & & & & & & & & & & & if (0==uc-&SendFlag)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & _sys_close_socket(s-&rtpsocket);
& & & & & & & & & & & & & & & & & & & & _sys_close_socket(s-&rtcpsocket);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & free(s);
& & & & & & & & & & & & }
& & & & & & & & & & & & prevs =
& & & & & & & & & & & & s = s-&
& & & & & & & & }
cleanup:& & & &
& & & & free(pktpart);
& & & & uc-&PreventEntryIntoFlaggingFunctions = FALSE;
& & & & return(err);
空间积分0 信誉积分120 UID阅读权限70积分6319帖子精华可用积分6319 专家积分0 在线时间4227 小时注册时间最后登录
富足长乐, 积分 6319, 距离下一级还需 1681 积分
帖子主题精华可用积分6319 专家积分0 在线时间4227 小时注册时间最后登录
论坛徽章:0
&&for (i = 0; i & vec_ i++)
& && &&&{
& && && && && & pktpart[i+1].iov_base = payload.iov_
& && && && && & pktpart[i+1].iov_len = payload.iov_
& && && && && & data_len += payload.iov_
& && && && && & /* octet count only measures the payload (no extension, no SSRC lists,
& && && && && && && && & etc.) */
& && &&&}复制代码这段代码应该编不过....&&应该是这样才是:pktpart[i+1].iov_base = padload.iov_
我的理解:
1. send()是通过sendto()实现的,只是send()里不需要指定sockaddr而已(之前已经bind了);
2. sendto()是是通过sendmsg()实现的,只不过只使用一个缓冲区且不发送带外数据而已,仅仅将msg_iovlen = 1; msg_control = NULL; msg_controllen = 0;
3. UCOS不是很了解,如果那个socket库不提供sendmsg()API, 我猜系统调用中那个接口应该还是在的,只是库没提供,这点需要确认;
4. 上面的程序使用sendmsg()的过程中,使用了多个缓冲区,你可以首先将这些缓冲区连接到一个缓冲区,再利用send()发送,应该是可以达到同样的效果。
空间积分0 信誉积分120 UID阅读权限70积分6319帖子精华可用积分6319 专家积分0 在线时间4227 小时注册时间最后登录
富足长乐, 积分 6319, 距离下一级还需 1681 积分
帖子主题精华可用积分6319 专家积分0 在线时间4227 小时注册时间最后登录
论坛徽章:0
我发现了, 论坛有bug!pktpart[i+1].iov_base = padload[i].iov_base;复制代码非要用代码格式编辑才行,否则会漏掉!
空间积分0 信誉积分122 UID阅读权限10积分10帖子精华可用积分10 专家积分0 在线时间7 小时注册时间最后登录
白手起家, 积分 10, 距离下一级还需 190 积分
帖子主题精华可用积分10 专家积分0 在线时间7 小时注册时间最后登录
论坛徽章:0
本帖最后由 canbus 于
17:39 编辑
谢谢doofy。先去试下行不行。利用向量计算实现游戏中的追踪算法 - 下载频道
- CSDN.NET
&&&&利用向量计算实现游戏中的追踪算法
利用向量计算实现游戏中的追踪算法
游戏中的追踪效果很常见,如飞行游戏中各种敌方战机会追着玩家跑,这样的算法有很多,本文介绍了一种利用向量计算来实现的追踪算法。并附例程源代码。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行后使用快捷导航没有帐号?
查看: 4058|回复: 35
&&此帖已结(50)
最后登录在线时间1483小时0分注册时间阅读权限100精华12积分26236帖子本月在线3小时15分
积分26236帖子本月在线3小时15分
专家等级: 结帖率:100%
最近喜欢上了C++开发STM32,C++语法上基本是C的扩展,所以习惯用C的人所有的知识和代码可以继续发挥作用。
另外,C++的OO编程,代码架构更接近人的思考模式,即使我们不需要OO编程,代码的可维护性也好了很多。
但若要完全C++开发,遇到的问题是中断向量的问题,用C来包装一个C++ 函数的方式可以解决,但似乎有些不爽。
中断向量,就是函数入口地址,这个C++的静态函数可以对应起来。
我们可以从map文件中,把中断向量的一个个的C++函数的入口地址符号找到,写入startup文件中。
但C++的symbol不像C语言那么简洁了,而且可能随着源代码的编辑而改变,包括函数的顺序,函数的返回值,函数的参数等。
_ZN10CInterrupt15TIM3_IRQHandlerEv 看看这个符号,是不是很别扭,C语言的Symbol就一个TIM3_IRQHandler,跟函数名完全相同。
这时候,我们应该尽量不要在汇编程序中写向量表,而是到C++文件中写向量表了。
最佳答案+5
mark,有用。
马屁哥V5, 不过我承认我看不懂
好好学习 ~
我是用C结构体+指针 模拟C++
嘿嘿,如果在eCos上,那可是小KS了!
c++因为不是全功能版本,最后我还是放弃了 ...
收藏。关注中断部分是怎么处理的 ...
STM32可以用C++来写程序?这么厉害了。
善待今天就是对未来最好的策划。
IC销售采购群,可广告()
电子/单片机技术交流()
最后登录在线时间1483小时0分注册时间阅读权限100精华12积分26236帖子本月在线3小时15分
积分26236帖子本月在线3小时15分
专家等级: 结帖率:100%
这是修改的的startup.s文件
-----------------------------华丽丽的分界线---------------------------------------------------
Stack_Size& && &EQU& &&&0x
& && && && && & AREA& & STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem& && & SPACE& &Stack_Size
__initial_sp
__initial_sp_ex
Heap_Size& && & EQU& &&&0x
& && && && && & AREA& & HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem& && &&&SPACE& &Heap_Size
__heap_limit
& && && && && & EXPORT&&__initial_sp_ex
& && && && && & EXPORT&&__Vectors
& && && && && & EXPORT&&__Vectors_End
& && && && && & EXPORT&&__Vectors_Size
__Vectors& && && && &EQU& && &&&0x
__Vectors_End& && &&&EQU& && &&&0x
__Vectors_Size& && &&&EQU& && &&&0x40
& && && && && & PRESERVE8
& && && && && & THUMB
& && && && && & AREA& & |.text|, CODE, READONLY
; Reset handler
Reset_Handler& & PROC
& && && && && &&&EXPORT&&Reset_Handler& && && && & [WEAK]
& &&&IMPORT&&__main
& &&&IMPORT&&SystemInit
& && && && && &&&LDR& &&&R0, =SystemInit
& && && && && &&&BLX& &&&R0
& && && && && &&&LDR& &&&R0, =__main
& && && && && &&&BX& && &R0
& && && && && &&&ENDP
;*******************************************************************************
; User Stack and Heap initialization
;*******************************************************************************
& && && && && &&&IF& && &EF:__MICROLIB& && && &&&
& && && && && &
& && && && && &&&EXPORT&&__initial_sp
& && && && && &&&EXPORT&&__heap_base
& && && && && &&&EXPORT&&__heap_limit
& && && && && &
& && && && && &&&ELSE
& && && && && &
& && && && && &&&IMPORT&&__use_two_region_memory
& && && && && &&&EXPORT&&__user_initial_stackheap
& && && && && &&&
__user_initial_stackheap
& && && && && &&&LDR& &&&R0, =&&Heap_Mem
& && && && && &&&LDR& &&&R1, =(Stack_Mem + Stack_Size)
& && && && && &&&LDR& &&&R2, = (Heap_Mem +&&Heap_Size)
& && && && && &&&LDR& &&&R3, = Stack_Mem
& && && && && &&&BX& && &LR
& && && && && &&&ALIGN
& && && && && &&&ENDIF
& && && && && &&&END
善待今天就是对未来最好的策划。
IC销售采购群,可广告()
电子/单片机技术交流()
最后登录在线时间1483小时0分注册时间阅读权限100精华12积分26236帖子本月在线3小时15分
积分26236帖子本月在线3小时15分
专家等级: 结帖率:100%
这个是Interrupt.hpp文件,可根据需要增添,可以把所有的ISR函数都挂上去,也可以只写自己需要的
class CInterrupt
& & & & static void USB_LP_CAN1_RX0_IRQHandler();
& & & & static void TIM3_IRQHandler();
善待今天就是对未来最好的策划。
IC销售采购群,可广告()
电子/单片机技术交流()
最后登录在线时间1483小时0分注册时间阅读权限100精华12积分26236帖子本月在线3小时15分
积分26236帖子本月在线3小时15分
专家等级: 结帖率:100%
这个是Interrupt.cpp文件,包括2个成员函数的实现
------------------------------------------------------------------------------
void CInterrupt::USB_LP_CAN1_RX0_IRQHandler()
& & & & if(!g_bInterruptPause)& & & & AndyUSB.USB_Istr();
void CInterrupt::TIM3_IRQHandler()
& & & & if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
& & & & & & & & TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
& & & & & & & &
& & & & & & & & g_nNowTime++;
& & & & & & & &
//& & & & & & & & if(0==(g_nNowTime%2))
& & & & & & & & {
& & & & & & & & & & & & AndyHW.HwCallBackKeyScan();
& & & & & & & & }
& & & & & & & & AndyHW.HwCallBackOverCurrent();
& & & & & & & & AndyOS.sysCallBackTimer10ms();& &//10mS
善待今天就是对未来最好的策划。
IC销售采购群,可广告()
电子/单片机技术交流()
最后登录在线时间1483小时0分注册时间阅读权限100精华12积分26236帖子本月在线3小时15分
积分26236帖子本月在线3小时15分
专家等级: 结帖率:100%
下面的这个部分,可以写在Interrupt.cpp文件中,也可单独写一个CPP文件。
-----------------------------------------------------------------------------------------------------------------------------
#ifdef __cplusplus
extern &C& {
void __initial_sp_ex(void);
void Reset_Handler(void);
#ifdef __cplusplus
void Default_Handler(void);
typedef void(* const ISR_t)(void);
ISR_t IsrVector[] __attribute__ ((section(&RESET&))) =
& & & & & & & & __initial_sp_ex,
& & & & & & & & Reset_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & 0,
& & & & & & & & 0,
& & & & & & & & 0,
& & & & & & & & 0,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & 0,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & CInterrupt::USB_LP_CAN1_RX0_IRQHandler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & CInterrupt::TIM3_IRQHandler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler,
& & & & & & & & Default_Handler
void Default_Handler(void)
& & while (1);
善待今天就是对未来最好的策划。
IC销售采购群,可广告()
电子/单片机技术交流()
最后登录在线时间1483小时0分注册时间阅读权限100精华12积分26236帖子本月在线3小时15分
积分26236帖子本月在线3小时15分
专家等级: 结帖率:100%
不过有些遗憾的是,STM32的FwLib没有C++版本的,不过C++和C混合使用,没问题的
ST提供的h文件中全加入了兼容C和C++的宏处理
#ifdef __cplusplus
extern &C& {
当转到C++后,就可以使用虚函数来代替一部分函数指针,可读性更好。
MDK中RVDS编译器,对C++的优化很好,没用到的成员函数会被优化掉,所以如果做平台一定记得对相关的成员函数禁止优化,使用--keep选项
OK,享受C++之旅吧
善待今天就是对未来最好的策划。
IC销售采购群,可广告()
电子/单片机技术交流()
最后登录在线时间74小时20分注册时间阅读权限30精华0积分238帖子本月在线1小时0分
中级技术员, 积分 238, 距离下一级还需 62 积分
积分238帖子本月在线1小时0分
专家等级: 结帖率:0%
最后登录在线时间268小时5分注册时间阅读权限50精华0积分402帖子本月在线0小时15分
资深技术员, 积分 402, 距离下一级还需 98 积分
积分402帖子本月在线0小时15分
专家等级: 结帖率:0%
mark,有用。
最后登录在线时间6008小时30分注册时间阅读权限150精华19积分98282帖子本月在线33小时15分
积分98282帖子本月在线33小时15分
专家等级: 结帖率:79%
马屁哥V5, 不过我承认我看不懂
提供5年质保优质长寿命电源(可靠性验证中...)& &&&订制低噪声开关电源 音响电源
QQ&&Email: &&超级电源QQ群:
最后登录在线时间918小时0分注册时间阅读权限100精华2积分4355帖子本月在线9小时45分
积分4355帖子本月在线9小时45分
专家等级: 结帖率:100%
厉害啊&&好好学习 ~
欢迎进入【】版块
最后登录在线时间1483小时0分注册时间阅读权限100精华12积分26236帖子本月在线3小时15分
积分26236帖子本月在线3小时15分
专家等级: 结帖率:100%
C++不会太臃肿,如果仅仅是使用static成员函数和static成员变量,来实现函数的分门别类管理,有些类似于namespace,那么代码基本和纯C是相当的。
但即使代码会变胖,我仍然使用了C++的一些扩展特性,比如虚函数,多态函数,继承类,代码效率差个10来个点换来的是代码架构的直观化,还有代码的可重用性。
比如一个class你想扩展他的功能,不是直接改代码,而是从他继承一个类,然后增加函数,或者覆盖函数,而不破坏基类代码的完整性,这是开发者多么期待的事啊。
善待今天就是对未来最好的策划。
IC销售采购群,可广告()
电子/单片机技术交流()
最后登录在线时间1071小时50分注册时间阅读权限90精华0积分1060帖子本月在线23小时45分
助理工程师, 积分 1060, 距离下一级还需 940 积分
积分1060帖子本月在线23小时45分
专家等级: 结帖率:92%
我是用C结构体+指针 模拟C++
最后登录在线时间1483小时0分注册时间阅读权限100精华12积分26236帖子本月在线3小时15分
积分26236帖子本月在线3小时15分
专家等级: 结帖率:100%
不错,我这次全改成C++就是为了处理这个问题
用C的结构体,里面有很多函数指针的那种,我全用class来替代,代码效率会提高。
另外,用虚函数来替代结构体中的函数指针,你不用担心函数指针为空的现象了,因为纯虚函数实现之前,编译器是不允许你实例化的。
善待今天就是对未来最好的策划。
IC销售采购群,可广告()
电子/单片机技术交流()
最后登录在线时间245小时5分注册时间阅读权限90精华0积分1897帖子本月在线0小时0分
助理工程师, 积分 1897, 距离下一级还需 103 积分
积分1897帖子本月在线0小时0分
专家等级: 结帖率:55%
嘿嘿,如果在eCos上,那可是小KS了!
欢迎加入eCos群:
欢迎访问我的个人博客:
喜欢eCos,就像当初喜欢linux一样,如果你也有兴趣访问:http://52ecos.net
最后登录在线时间60小时15分注册时间阅读权限20精华0积分78帖子本月在线0小时0分
初级技术员, 积分 78, 距离下一级还需 22 积分
积分78帖子本月在线0小时0分
专家等级: 结帖率:0%
最后登录在线时间37小时45分注册时间阅读权限50精华0积分321帖子本月在线0小时0分
资深技术员, 积分 321, 距离下一级还需 179 积分
积分321帖子本月在线0小时0分
专家等级: 结帖率:100%
倍工电子--物联网方案供应商
最后登录在线时间3239小时45分注册时间阅读权限90精华10积分14959帖子本月在线32小时0分
资深工程师, 积分 14959, 距离下一级还需 5041 积分
积分14959帖子本月在线32小时0分
专家等级: 结帖率:24%
楼主能否将你的工程文件共享一下呢? 只要中断向量相关的@@@
又种了一棵草...
最后登录在线时间2078小时5分注册时间阅读权限100精华17积分32190帖子本月在线9小时15分
积分32190帖子本月在线9小时15分
专家等级: 结帖率:100%
c++因为不是全功能版本,最后我还是放弃了
嵌入式群 ←← +→→←←+ →→←←←←
最后登录在线时间668小时5分注册时间阅读权限90精华2积分2698帖子本月在线0小时0分
初级工程师, 积分 2698, 距离下一级还需 302 积分
积分2698帖子本月在线0小时0分
专家等级: 结帖率:100%
最后登录在线时间2325小时40分注册时间阅读权限100精华9积分45835帖子本月在线14小时30分
积分45835帖子本月在线14小时30分
专家等级: 结帖率:93%
收藏。关注中断部分是怎么处理的
欢迎进入& && &21ic TI技术交流群:
核心会员奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术导师奖章
人才类勋章
技术高手奖章
人才类勋章
时间类勋章
时间类勋章
技术奇才奖章
人才类勋章
涓涓之细流
发帖类勋章
终身成就奖章
等级类勋章
时间类勋章
沉静之湖泊
发帖类勋章
突出贡献奖章
等级类勋章
欢快之小溪
发帖类勋章
社区建设奖章
等级类勋章
湍急之河流
发帖类勋章
技术新星奖章
人才类勋章
时间类勋章
技术领袖奖章
人才类勋章
荣誉元老奖章
等级类勋章
精华达人奖章
等级类勋章

我要回帖

更多关于 向量相乘 的文章

 

随机推荐