• Aucun résultat trouvé

SYNTAX SUMMARY

Dans le document programmer's UNIX* (Page 77-87)

This summary of C syntax is intended more for aiding comprehension than as an exact statement of the language.

The basic expressions are:

expression:

primary

*

expression

&lvalue - expression

! expression expression

+ +

lvalue

UNIX Programmer's Manual

Expressions

Languages and Support Tools-55

--lvalue lvalue

+ +

lvalue

--sizeof expression sizeof (type-name)

( type-name) expression expression binop expression

expression ? expression : expression lvalue asgnop expression

expression , expression primary:

identifier constant string

( expression)

primary ( expression-list )

. { . J opt

przmary expressIOn primary . identifier primary -

>

identifier lvalue:

identifier

primary { expression J lvalue . identifier primary -

>

identifier

*

expression ( lvalue)

The primary-expression operators

o [] . ->

have highest priority and group left to right. The unary operators

*

& - ! -

++ --

sizeof ( type-name)

have priority below the primary operators but higher than any binary operator and group right to left. Binary operators group left to right; they have priority decreasing as indicated below.

binop:

* / % +

» «

< > <= >=

!=

&

1 &&

I

The conditional operator groups right to left.

Assignment operators all have the same priority and all group right to left.

asgnop:

+= -= *= /= %= » = « = &= "= 1=

The comma operator has the lowest priority and groups left to right.

Declarations declaration:

decl-specifiers init-declarator-list ; opt decl-specifiers:

type-specifier decl-specifiers sc-specifier decl-specifiers opt

opt

UNIX Programmer's Manual Languages and Support Tools-57

sc-specifier:

auto static extern register typedef type-specifier:

struct-or-union-specifier typedef-name

enum -specifier basic-type-specifier:

basic-type

basic-type basic-type-specifiers basic-type:

char short iot long unsigned float double void enum -specifier:

enum { enum-list }

enum identifier { enum-list } enum identifier

enum-list:

enumerator

enum-list, enumerator enumerator:

identifier

identifier == constant-expression init -declarator-list:

init -declarator

init-declarator, init-declarator-list

init -declarator:

declarator initializer opt declarator:

identifier ( declarator)

*

declarator declarator ()

declarator [ constant -expression J opt struct-or-union-specifier:

struct { struct-decl-list }

struct identifier { struct-decl-list } struct identifier

union { struct-decl-list }

union identifier { struct-decl-list } union identifier

struct -decl-list:

struct -declaration

struct -declaration struct -decl-list struct -declaration:

type-specifier struct-declarator-list ; struct -declarator-list:

struct -declarator

struct-declarator, struct-declarator-list struct -declarator:

declarator

declarator: constant-expression : constant-expression

initializer:

=

expression

= { initializer-list }

= {

initiaUzer-Ust , }

UNIX Programmer's Manual Languages and Support Tools-59

initializer-list:

expression

initializer-list , initializer-list { initializer-list }

{ initializer-list , } type-name:

type-specifier abstract -declarator abstract -declarator:

empty

. ( abstract -declarator)

*

abstract -declarator abstract-declarator

0

abstract -declarator [ constant -expression 1 opt typedef-name:

identifier

compound -statement:

Statements

{ declaration-list statement-list }

opt opt

declaration -list:

declaration

declaration declaration-list statement-list:

statement

statement statement-list

statement:

compound -statement expression;

if ( expression) statement

if ( expression) statement else statement while ( expression) statement

do statement while ( expression) ; for (exp opt;exp opt;exp opt) statement switch ( expressIOn) statement case constant -expression: statement default: statement

break;

continue;

return;

return expression ; goto identifier ; identifier: statement

External definitions

program:

external-definition

external-definition program external-definition:

Junction -definition data -definition Junction-definition:

decl-specifier t Junction-declarator Junction-body op

Junction-declarator:

declarator ( parameter-list ) opt parameter-list:

identifier

identifier, parameter-list

UNIX Programmer's Manual Languages and Support Tools-61

function-body:

declaration -list compound -statement opt

data -definition:

extern declaration ; static'declaration ;

Preprocessor

#define identifier token-stringopt

#define identifier(;dentifier, •• .)token-string t

#undef identifier op

#include ''filename''

#include <.filename>

#if restricted -const ant -expression

#ifdef identifier

#ifndef identifier

#else

#endif

#line constant ''filename''

C LIBRARIES

GENERAL

This chapter and THE OBJECf AND MATH LIBRARIES chapter describe the libraries that are supported on the UNIX operating system. A library is a collection of related functions and/or declarations that simplify programming effort by linking only what is needed, allowing use of locally produced functions, etc. All of the functions described are also described in Part 3 of the UNIX Programmer's Manual-Volume 2: System Calls and Library Routines.

Most of the declarations described are in Part 5 of the 2UNIX Programmer's Manual- Volume 2: System Calls and Library Routines. The three main libraries on the UNIX system are:

C library

Object file

Math library

This is the basic library for C language programs. The C library is composed of functions and declarations used for file access, string testing and manipulation, character testing and manipulation, memory allocation, and other functions. This library is described later in this chapter.

This library provides functions for the access and manipulation of object files. This library is described in THE OBJECf AND MATH LIBRARIES chapter.

This library provides exponential, bessel functions, logarithmic, hyperbolic, and trigonometric functions.

This library is described in THE OBJECf AND MATH LIBRARIE.S chapter.

Some libraries consist of two portions - functions and declarations. In some cases, the user must request that the functions (and/or declarations) of a specific library be included in a program being compiled. In other cases, the functions (and/or declarations) are included automatically.

UNIX Programmer's Manual Languages and Support Tools-63

Including Functions

When a program is being compiled, the compiler will automatically search the C language library to locate and include functions that are used in the program. This is the case only for the C library and no other library. In order for the compiler to locate and include functions from other libraries, the user must specify these libraries on the command line for the compiler. For example, when using functions of the math library, the user must request that the math library be searched by including the argument -1m on the command line, such as:

cc file.c -1m

The argument -1m must come after all files that reference functions in the math library in order for the link editor to know which functions to include in the a.out file.

This method should be used for all functions that are not part of the C language library.

Including Declarations

Some functions require a set of declarations in order to operate properly. A set of declarations is stored in a file under the /usrlinclude directory. These files are referred to as header files. In order to include a certain header file, the user must specify this request within the C language program. The request is in the form:

#include

<

file.h

>

where file.h is the name of the file: Since the header files define the type of the functions and various preprocessor constants, they must be included before invoking the functions they declare.

The remainder of this chapter describes the functions and header files of the C Library. The description of the library begins with the actions required by the user to include the functions and/or header files in a program being compiled (if any). Following the description of the actions required is information in three-column format of the form:

function reference (N) Brief description.

The functions are grouped by type while the reference refers to section 'N' in the 2UNIX Programmer's Manual- Volume 2: System Calls and Library Routines. Following this, are descriptions of the header files associated with these functions (if any) .

Dans le document programmer's UNIX* (Page 77-87)

Documents relatifs