Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
50
Добавлен:
14.04.2015
Размер:
1.37 Mб
Скачать

Keil Software — Cx51 Compiler User’s Guide

353

 

 

Appendix A. Differences from ANSI C

The Cx51 compiler differs in only a few aspects from the ANSI C Standard.

A

These differences can be grouped into compiler-related differences and

library-related differences.

 

Compiler-related Differences

Wide Characters

Wide 16-bit characters are not supported by Cx51. ANSI provides wide characters for future support of an international character set.

Recursive Function Calls

Recursive function calls are not supported by default. Functions that are recursive must be declared using the reentrant function attribute. Reentrant functions can be called recursively because the local data and parameters are stored in a reentrant stack. In comparison, functions which are not declared using the reentrant attribute use static memory segments for the local data of the function. A recursive call to these functions overwrites the local data of the prior function call instance.

Library-related Differences

The ANSI C Standard Library includes a vast number of routines, most of which are included in Cx51. Many, however, are not applicable to an embedded application and are excluded from the Cx51 library.

The following ANSI Standard library routines are included in the Cx51 library:

abs

cosh

isdigit

acos

exp

isgraph

asin

fabs

islower

atan

floor

isprint

atan2

fmod

ispunct

atof

free

isspace

atoi

getchar

isupper

atol

gets

isxdigit

calloc

isalnum

labs

ceil

isalpha

log

cos

iscntrl

log10

 

 

354

 

Appendix A. Differences from ANSI C

 

 

 

 

 

 

 

longjmp

sin

strrchr

 

 

malloc

sinh

strspn

A

 

 

memchr

sprintf

strstr

 

memcmp

sqrt

strtod

 

memcpy

srand

strtol

 

 

memmove

sscanf

strtoul

 

 

 

 

memset

strcat

tan

 

 

modf

strchr

tanh

 

 

pow

strcmp

tolower

 

 

printf

strcpy

toupper

 

 

putchar

strcspn

va_arg

 

 

puts

strlen

va_end

 

 

rand

strncat

va_start

 

 

realloc

strncmp

vprintf

 

 

scanf

strncpy

vsprintf

 

 

setjmp

strpbrk

 

 

 

The following ANSI Standard library routines are not included in the Cx51

 

 

library:

 

 

 

 

abort

freopen

remove

 

 

asctime

frexp

rename

 

 

atexit

fscanf

rewind

 

 

bsearch

fseek

setbuf

 

 

clearerr

fsetpos

setlocale

 

 

clock

ftell

setvbuf

 

 

ctime

fwrite

signal

 

 

difftime

getc

strcoll

 

 

div

getenv

strerror

 

 

exit

gmtime

strftime

 

 

fclose

ldexp

strtok

 

 

feof

ldiv

strxfrm

 

 

ferror

localeconv

system

 

 

fflush

localtime

time

 

 

fgetc

mblen

tmpfile

 

 

fgetpos

mbstowcs

tmpnam

 

 

fgets

mbtowc

ungetc

 

 

fopen

mktime

vfprintf

 

 

fprintf

perror

wcstombs

 

 

fputc

putc

wctomb

 

 

fputs

qsort

 

 

 

fread

raise

 

Keil Software — Cx51 Compiler User’s Guide

355

 

 

The following routines are not found in the ANSI Standard Library but are included in the Cx51 library:

acos517

_iror_

strpos

asin517

log10517

strrpbrk

atan517

log517

strrpos

atof517

_lrol_

strtod517

cabs

_lror_

tan517

_chkfloat_

memccpy

_testbit_

cos517

_nop_

toascii

_crol_

printf517

toint

_cror_

scanf517

_tolower

exp517

sin517

_toupper

_getkey

sprintf517

ungetchar

init_mempool

sqrt517

 

_irol_

sscanf517

 

A

356

Appendix A. Differences from ANSI C

 

 

A

Соседние файлы в папке HLP