返回列表 发帖

各位大哥,小妹初来,有问题想请教!

/*--------------------------------------------------------------------------
STRING.H

String functions.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __STRING_H__
#define __STRING_H__

#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned int size_t;
#endif

#ifndef NULL
#define NULL ((void *) 0L)
#endif

#pragma SAVE
#pragma REGPARMS
extern char *strcat (char *s1, char *s2);
extern char *strncat (char *s1, char *s2, int n);

extern char strcmp (char *s1, char *s2);
extern char strncmp (char *s1, char *s2, int n);

extern char *strcpy (char *s1, char *s2);
extern char *strncpy (char *s1, char *s2, int n);

extern int strlen (char *);

extern char *strchr (const char *s, char c);
extern int strpos (const char *s, char c);
extern char *strrchr (const char *s, char c);
extern int strrpos (const char *s, char c);

extern int strspn (char *s, char *set);
extern int strcspn (char *s, char *set);
extern char *strpbrk (char *s, char *set);
extern char *strrpbrk (char *s, char *set);
extern char *strstr  (char *s, char *sub);
extern char *strtok  (char *str, const char *set);

extern char memcmp (void *s1, void *s2, int n);
extern void *memcpy (void *s1, void *s2, int n);
extern void *memchr (void *s, char val, int n);
extern void *memccpy (void *s1, void *s2, char val, int n);
extern void *memmove (void *s1, void *s2, int n);
extern void *memset  (void *s, char val, int n);
#pragma RESTORE

#endif
这是C51 中string.h中的内容,请问各位大哥大姐,#pragma SAVE
#pragma REGPARMS    #pragma RESTORE这三个是什么意思啊?

电子园商城推荐:


呵呵,看着资料来解释吧
首先: SAVE     REGPARMS     RESTORE这三个是keil的编译器控制命令。主要用来控制编译器编译程序时候进行条件选择。

在源文件中,控制命令应当使用#program这个标识符来说明他是控制命令。
控制命令分为三类:源控制命令、目标控制命令、列表控制命令。

SAVE     REGPARMS     RESTORE这三个都是目标控制命令,下面分别说一下:
REGPARMS:
使用方法:在options--c51--misc controls中输入REGPARMS命令。
功能:控制编译器通过寄存器传递的参数个数多达3个,这种类型的参数传递类似于汇编语言编程,且执行速度比将参数存放在存储器中明显更快。若不能使用寄存器存储的参数,则使用固定的存储区域传递。

SAVE /RESTOR:
使用方法:该命令不能再命令行指定。
功能:保存AREGS,REGPARMS的当前设置以及当前OPTIMIZE的级别和重点内容。设置在#include命令之前被保存,在使用RESTORE命令后恢复。使用RESTORE命令从保存堆栈中取出最近一个SAVE命令所保存的值。SAVE命令的最大嵌套深度为8级

TOP

回复 2# tiankai


    谢谢大哥!
芊芊

TOP

呵呵,你怎么研究起这个来了,想深入研究keil的内部构造?

TOP

研究这个的人不多啊!!!!!!!!!!!!!
harbeth

TOP

想写头文件吧

TOP

写头文件可以不要用到这些吧
#include <iostream>

int main()
{
      std::cout<<"Hello,World!"<<std::endl;
}

TOP

汗。。没研究过

TOP

这个真没仔细研究过。。
我们非常勤奋的去享受痛苦,等待我们不再痛苦!

TOP

呵呵,女生比较重视细节……

TOP

返回列表

站长推荐 关闭


Cepark 51单片机在线免费培训火热报名中

暑假就要来了!在这个暑假,你有什么打算?有没有想到趁着这个假期认真学一些知识呢? 对于单片机知识,你了解吗?有没有想过趁着这个暑假,好好的学习一下单片 ...


查看