日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル >  V8.3ライブラリ

OpenVMS マニュアル


HP OpenVMS
HP C ランタイム・ライブラリ・
リファレンス・マニュアル (下巻)


前へ 次へ 目次 索引





assert

プログラムで実行時診断機能を実相するために使用します。



形式

#include <assert.h>

void assert (int expression);




引数



expression

int型の式。



説明

assertを実行したときに,expression が False である (つまり 0 に評価される) 場合は, assertは異常終了した特定の呼び出しに関する情報 ( 引数のテキスト,ソース・ファイルの名前,ソース行番号などで,最後の 2 つはそれぞれ前処理マクロ __FILE__および __LINE__の値 ) を,実装で定義されている形式で標準エラー・ファイルに書き込みます。その後, abort関数を呼び出します。

assert関数は次の形式でメッセージを書き込みます。


Assertion failed:  expression, file aaa, line nnn

expression が True である ( つまり 0 以外の値に評価される ) 場合や,シグナル SIGABRT が無視されている場合は, assertは値を返しません。

注意

送出される式の一部にヌル文字 ('\0') が含まれている場合は,ヌル文字までのテキスト (ヌル文字を含む) だけが印刷されます。これは,ヌル文字が文字列の出力を終了するからです。

#include assert文より前にプリプロセッサ・ディレクティブ #defineNDEBUG を指定するか,または CC コマンド修飾子 /DEFINE=NDEBUG を指定してコンパイルすると, assert関数は無効になります。





#include <stdio.h> 
#include <assert.h> 
 
main() 
{ 
    printf("Only this and the assert\n"); 
    assert(1 == 2);     /* expression is FALSE */ 
 
    /* abort should be called so the printf will not happen. */ 
 
    printf("FAIL abort did not execute"); 
} 




atan




形式

#include <math.h>

double atan (double x);

float atanf (float x); (Alpha, I64)

long double atanl (long double x); (Alpha, I64)

double atand (double x); (Alpha, I64)

float atandf (float x); (Alpha, I64)

long double atandl (long double x); (Alpha, I64)




引数



x

実数値で表したラジアン値。



説明

atan関数は, [ -pi/2,pi/2 ] ラジアンの範囲で x の逆正接の主値を計算します。

atand関数は, [ - 90,90] 度の範囲で x の逆正接の主値を計算します。




atan2




形式

#include <math.h>

double atan2 (double y, double x);

float atan2f (float y, float x); (Alpha, I64)

long double atan2l (long double y, long double x); (Alpha, I64)

double atand2 (double y, double x); (Alpha, I64)

float atand2f (float y, float x); (Alpha, I64)

long double atand2l (long double y, long double x); (Alpha, I64)




引数



y

実数値で表したラジアン値。

x

実数値で表したラジアン値。



説明

atan2関数は, [ -pi,pi ] ラジアンの範囲で y/x の逆正接の主値を計算します。 atan2atan2fの符号は, y の符号によって決定されます。 atan2(y, x) の値は次のように計算されます。ただし,f はデータ型に関連付けられている小数ビットの数です。

入力引数の値 返される角度
x = 0 または y/x > 2**( f+1) pi/2 * (sign y)
x > 0 および y/x <= 2**( f+1) atan( y/x)
x < 0 および y/x <= 2**( f+1) pi * (sign y) + atan(y/x)

atand2関数は, [ - 180,180] 度の範囲で y/x の逆正接の主値を計算します。 atand2atand2fの符号は, y の符号によって決定されます。

次の引数は, atan2関数および atand2関数にとって不正な引数です。

関数 例外引数
atan2, atan2f, atan2l x = y = 0
atan2, atan2f, atan2l | x| = | y| = 無限大
atand2, atand2f, atand2l x = y = 0
atand2, atand2f, atand2l | x| = | y| = 無限大




atanh (Alpha, I64)

引数の双曲線逆正接を返します。



形式

#include <math.h>

double atanh (double x);

float atanhf (float x);

long double atanhl (long double x);




引数



x

領域 [ - 1,1] の実数値として表したラジアン値。



説明

atanh関数は x の双曲線逆正接を返します。 atanh関数は tanh関数の逆関数であり, atanh( tanh(x)) = x です。

|x| > 1 は不正な引数です。




atexit

引数を指定せずに呼び出された関数をプログラムの終了時に登録します。



形式

#include <stdlib.h>

int atexit (void (*func) (void));




引数



func

登録する関数を指すポインタ。



戻り値

0 登録が正常終了したことを示します。
0 以外の値 異常終了を示します。




制限事項

longjmp関数をハンドラの内部から実行することはできません。これは, longjmpの宛先アドレスがもはや存在しないからです。




#include <stdlib.h> 
#include <stdio.h> 
 
static void hw(void); 
 
main() 
{ 
    atexit(hw); 
} 
    
static void hw() 
{ 
        puts("Hello, world\n"); 
} 

この例では,次の出力が生成されます。


Hello, world 
 




atof

ASCII 文字列を倍精度数値に変換します。



形式

#include <stdlib.h>

double atof (const char *nptr);




引数



nptr

倍精度数値に変換する文字列を指すポインタ。文字列は,浮動小数点定数を解釈するために使用される規則と同じ規則で解釈されます。



説明

変換される文字列の形式は次のとおりです。


[white-spaces][+|-]digits[radix-character][digits][e|E[+|-]integer] 

ただし,radix-character は現在のロケールで定義されます。

認識されない最初の文字が検出されると,変換は終了します。

この関数は strtod(nptr, (char**) NULL)と同じです。




戻り値

x 変換後の値。
0 アンダフローまたは変換を実行できないことを示します。この関数は errno を ERANGE または EINVAL に設定します。
±HUGE_VAL オーバフローが発生しました。 errno は ERANGE に設定されます。




atoi, atol

ASCII 文字列を適切な数値に変換します。



形式

#include <stdlib.h>

int atoi (const char *nptr);

long int atol (const char *nptr);




引数



nptr

数値に変換する文字列を指すポインタ。



説明

atoi関数と atol関数は,文字列の最初の部分をそれぞれ 10 進数の int値および long int値に変換します。 atoi関数と atol関数は,変換で発生するオーバフローを考慮しません。変換される文字列は次の形式です。


[white-spaces][+|-]digits 

関数呼び出し atol (str)strtol (str, (char**)NULL, 10)と同じであり,関数呼び出し atoi (str)(int) strtol(str, (char**)NULL, 10)と同じです。ただし,どちらの場合もエラー発生時の動作が異なります。




戻り値

n 変換後の値。




atoq, atoll (Alpha, I64)

ASCII 文字列を適切な数値に変換します。 atollatoqの同意語です。



形式

#include <stdlib.h>

__int64 atoq (const char *nptr);

__int64 atoll (const char *nptr);




引数



nptr

数値に変換する文字列を指すポインタ。



説明

atoq(または atoll) 関数は,文字列の最初の部分を 10 進数の __int64値に変換します。この関数は変換で発生するオーバフローを考慮しません。変換される文字列の形式は次のとおりです。


[white-spaces][+|-]digits 

関数呼び出し atoq (str)strtoq (str, (char**)NULL, 10)と同じですが,エラー発生時の動作が異なります。




戻り値

n 変換後の値。




basename

パス名の最後のコンポーネントを返します。



形式

#include <libgen.h>

char *basename (char *path);

関数バリアント basename関数には, _basename32および _basename64という名前のバリアントがあり,それぞれ 32 ビット・ポインタ・サイズおよび 64 ビット・ポインタ・サイズで使用されます。ポインタ・サイズ固有の関数の使い方の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。


引数



path

ベース・パス名を抽出する UNIX 形式のパス名。



説明

basename関数は, path によって示される UNIX 形式のパス名を引数として受け付け,後続のスラッシュ (/) 文字を削除して,パス名の最後のコンポーネントを指すポインタを返します。

path がスラッシュ (/) 文字だけで構成されている場合は,この関数は文字列 "/" を指すポインタを返します。

path が NULL ポインタである場合や,空文字列を指す場合は,文字列 "." を指すポインタを返します。

basename関数は path によって示される文字列を変更する可能性があります。




戻り値

x path の最後のコンポーネントを指すポインタ。
"/" path が '/' 文字だけで構成されている場合。
"." path が NULL ポインタであるか,または空文字列を指す場合。




bcmp

バイト列を比較します。



形式

#include <strings.h>

void bcmp (const void *string1, const void *string2, size_t length);




引数



string1, string2

比較するバイト列。

length

バイト列の長さ (バイト数)。



説明

bcmp関数は,string1 のバイト列を string2 のバイト列と比較します。

文字列関数と異なり,ヌル・バイトの確認は行われません。長さが 0 のバイト列は常に同一であると解釈されます。

bcmpは, ANSI C 標準で定義されている memcmpに相当します。したがって,移植性の高いプログラムを実現するには, memcmpを使用することをお勧めします。




戻り値

0 バイト列は同一です。
0 以外の値 バイト列は同一ではありません。




bcopy

バイト列をコピーします。



形式

#include <strings.h>

void bcopy (const void *source, void *destination, size_t length);




引数



source

コピー元バイト列を指すポインタ。

destination

コピー先バイト列を指すポインタ。

length

バイト列の長さ (バイト数)。



説明

bcopy関数は,可変長バイト列に対して機能します。 length 引数の値 (バイト数) によって指定される長さのバイト列を source 引数のバイト列から destination 引数のバイト列にコピーします。

文字列関数と異なり,ヌル・バイトの確認は行われません。 length 引数が 0 (ゼロ) の場合,バイト列はコピーされません。

bcopyは, ANSI C 標準で定義されている memcpyに相当します。したがって,移植性の高いプログラムを実現するには, memcpyを使用することをお勧めします。




box

ウィンドウの周囲に四角形を描きます。四角形の縦線を描く文字として vert 文字を使用し,四角形の横線を描く文字として hor 文字を使用します。



形式

#include <curses.h>

int box (WINDOW *win, char vert, char hor);




引数



win

ウィンドウのアドレス。

vert

ウィンドウの縦線を描く文字。

hor

ウィンドウの横線を描く文字。



説明

box関数は,サブウィンドウに描いた四角形を親ウィンドウにコピーします。サブウィンドウに四角形が描かれた状態で, overlayoverwriteなどの関数を使用する場合は注意が必要です。このような関数は,四角形を親ウィンドウにコピーします。



戻り値

OK 正常終了を示します。
ERR エラーを示します。




brk

プログラムで使用されていない最小の仮想アドレスを判断します。



形式

#include <stdlib.h>

void *brk (unsigned long int addr);




引数



addr

最小アドレス。このアドレスがページ・サイズの次の倍数に切り上げられます。この切り上げられたアドレスを 区切りアドレスと呼びます。



説明

区切りアドレス値に等しいかそれより大きく,スタック・ポインタより小さいアドレスは,プログラムのアドレス空間の外部にあると解釈されます。このようなアドレスを参照しようとすると,アクセス違反が発生します。

プログラムを実行する場合,区切りアドレスは,プログラム記憶域およびデータ記憶域によって定義される最大記憶位置に設定されます。したがって, brk関数は,データ領域を拡大するプログラムでのみ必要です。




戻り値

n 新しい区切りアドレス。
(void *)( - 1) プログラムが要求しているメモリ容量が多すぎることを示します。 errno vaxc$errno が更新されます。




制限事項

他の C ライブラリの実装と異なり, HP C RTL のメモリ割り当て関数 ( mallocなど) では,プログラム・ヒープ空間の管理で brksbrkに依存していません。したがって,OpenVMS システムで brkまたは sbrkを呼び出すと,メモリ割り当てルーチンを妨害する可能性があります。 brk関数と sbrk関数が提供されるのは,互換性を維持するためだけです。


前へ 次へ 目次 索引



         印刷用画面へ

プライバシー 本サイト利用時の合意事項