博文

[Win编程]pragma指令简介(转)(2007-07-13 14:08:00)

摘要:pragma指令简介在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.下面介绍了一下该指令的一些常用参数,希望对大家有所帮助!一. message 参数。 message 它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #pragma message(“消息文本”) 当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。 当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏可以用下面的方法 #ifdef _X86 #pragma message(“_X86 macro activated!”) #endif 当我们定义了_X86这个宏以后,应用程序在编译时就会在编译输出窗口里显示“_ X86 macro activated!”。我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了 二. 另一个使用得比较多的#pragma参数是code_seg。格式如: #pragma code_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] ) 该指令用来指定函数在.obj文件中存放的节,观察OBJ文件可以使用VC自带的dumpbin命令行程序,函数在.obj文件中默认的存放节为.text节如果code_seg没有带参数的话,则函数存放在.text节中push (可选参数) 将一个记录放到内部编译器的堆栈中,可选参数可以为一个标识符或者节名pop(可选参数) 将一个记录从堆栈顶端弹出,该记录可以为一个标识符或者节名identifier (可选参数) 当使用push指令时,为压入堆栈的记录指派的一个标识符,当该标识符被删除的时候和其相关的堆栈中的记录将被弹出堆栈 "segment-name" (可选参数) 表示函数存放的节名例如://默认情况下,函数被存放在.text节中void func1() { // stored in .text}//将函数存放在.my_data1节中#pragma code_seg(".......

阅读全文(1431) | 评论:0

[C]C实现定时删除文件(2007-07-13 13:55:00)

摘要:#include "stdio.h"#include "string.h"#include "time.h"#include "stdlib.h" int main( void ){ char *strTime; time_t myTime; // long型时间 bool isDel;  time( &myTime );   // 取得时间 strTime = ctime( &myTime ); // 转换为字符串 printf( "%s", strTime ); // 显示时间 isDel = false; while( !isDel )    // 程序一直运行,直到删除了文件才结束次程序。{          /* 如果为18:00点则删除文件 */          if ( ( strTime[11] == '1' ) && ( strTime[12] == '8' ) && ( strTime[14] == '0' ) && ( strTime[15] == '0' ) )          {                  system( "type aaa.txt" ); // 显示文件的内容                  system( "del aaa.txt" );   ......

阅读全文(2578) | 评论:0

[面试题]C/C++应聘常见面试试题深入剖析(转)(2007-07-13 13:51:00)

摘要:试题:编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”   函数头是这样的: //pStr是指向以'\0'结尾的字符串的指针//steps是要求移动的nvoid LoopMove ( char * pStr, int steps ){ //请填充...}  解答:  正确解答1: void LoopMove ( char *pStr, int steps ){ int n = strlen( pStr ) - steps; char tmp[MAX_LEN];  strcpy ( tmp, pStr + n );  strcpy ( tmp + steps, pStr);  *( tmp + strlen ( pStr ) ) = '\0'; strcpy( pStr, tmp );}  正确解答2: void LoopMove ( char *pStr, int steps ){ int n = strlen( pStr ) - steps; char tmp[MAX_LEN];  memcpy( tmp, pStr + n, steps );  memcpy(pStr + steps, pStr, n );  memcpy(pStr, tmp, steps ); }  剖析:  这个试题主要考查面试者对标准库函数的熟练程度,在需要的时候引用库函数可以很大程度上简化程序编写的工作量。  最频繁被使用的库函数包括:  (1) strcpy  (2) memcpy  (3) memset  试题6:已知WAV文件格式如下表,打开一个WAV文件,以适当的数据结构组织WAV文件头并解析WAV格式的各项信息。  WAVE文件格式说明表 偏移地址 字节数 数据类型 内 容 文件头 00H 4 Char "RIFF"标志 04H 4 int32 文件长度 08H 4 Char "WAVE"标志 0CH 4 Char "fmt"标志 10H 4   过渡字节(不定) 14H 2 int16 格式类别 16H 2 int1......

阅读全文(1422) | 评论:0

[C++]栈和堆原理介绍(2007-07-13 13:48:00)

摘要: C++应用中内存分为2部分,一部分是栈(stack,也称堆栈),另一部分是堆(heap)。           栈: 可以把栈看成是一叠卡片,最上面的卡片表示程序的当前作用域,这往往就是当前正在执行的函数。当前函数中声明的所有变量都置于栈顶帧中,即占用栈顶帧的内存,这就相当于一叠卡片中最上面的一张卡片。如果当前函数调用了另一个函数,举例来说,一开始一叠卡片位于最底的卡片是main()函数,main()函数调用了foo()函数,则相当于在这一叠卡片上加了另一张卡片,这样foo()函数就有了自己的栈帧(就是指一块内存空间)以供使用。从main()传递到foo()的所有参数都会从main()栈帧复制到foo()栈帧中。 然后foo()函数又调用了bar()函数,则在这一叠卡片上又加了一张卡片,这样bar()就有了自己的栈帧(stack frame)以供使用,从foo()传递到bar()的参数就会从foo()栈帧复制到bar()栈帧中。 图片如下: foo()函数声明了一个整数值。              栈帧很有意义,因为栈帧可以为每个函数提供一个独立的内存工作区。如果一个变量是在foo()栈帧中声明的,那么调用bar()函数不会对它带来改变,除非你专门要求修改这个变量。另外,foo()函数运行结束时,栈帧既消失,该函数中声明的所有变量就不会再占用内存了。。              堆:堆是一段完全独立于当前函数或栈帧的内存区。如果一个函数中声明了一些变量,而且希望当这个函数结束时其中声明的变量依然存在,就可以将这些变量置于堆中。堆与栈相比,没有那么清晰的结构性。可以把堆看作是一“堆”小玩艺。程序可以在任何时刻向这个“堆”添加新的东西或者修改“堆”中已经有的东西。             ......

阅读全文(2964) | 评论:0

[C/C++]编程入门必做的题(76个 转)(2007-07-13 13:47:00)

摘要: 编程入门必做的题(76 个) 很久没去论坛逛了,一进去就看到这个了,看题目,本来以为是些简单的题目,本来不想点的,不过后来还是忍不住点了看了,  一看才知道,原来不是些简单的题目,有很多都是些经典的题目。。。   诶,偶好久没有动过C/C++了,现在就来锻炼一下,坚持一天做一个,看会不会做。。。。。 第一,二题解题思路......

阅读全文(1725) | 评论:0

[C++]2005“现代C++设计与编程”讲师讲义下载(2007-07-13 13:46:00)

摘要:2005 "现代C++设计与编程" 技术大会 讲师讲义开放下载:       Bjarne Stroustrup  《Direction for C++0x》       云风  《游戏的优化》       孟岩  《什么是高级C++》       荣耀  《C++模板元编程技术与应用》       陈榕  《面向目标代码编程与C++的未来》       李建忠  《C++/CLI:建立本地世界与托管世界互通的桥梁》       张银奎  《C++异常处理得与失》       温昱  《架构设计:策略与过程》       何宗键  《C++在嵌入式系统中的运用》       鲍志云  《用C++开发高性能服务器端网络应用程序》       黄飞龙  《多核技术与C++并发编程》       王旭  《基于C++的网游服务器中间件模型》因牵扯到相关公司机密,不便公开。 有2,3篇讲义是英文的,看来要补下英文了,不然看不懂。。。  ......

阅读全文(1931) | 评论:0