■NGK パワーケーブル スズキ ワゴンRワイド MA61S/MB61S(車体No.117193~) MA61S/MB61S(車体No.117193~) K10A(DOHCターボ) H9.2~H11.5【08S】【即日発送】

ソースプログラムをコンパイルする前に、ソースプログラムに対して行われる前処理をプリプロセスという。このプリプロセスを行なうプログラムのことをプリプロセッサと呼ぶ。通常はコンパイラがプリプロセッサの機能を兼ね備えている。

■NGK パワーケーブル スズキ ワゴンRワイド MA61S/MB61S(車体No.117193~) MA61S/MB61S(車体No.117193~) K10A(DOHCターボ) H9.2~H11.5【08S】公式通販サイト

プリプロセッサとは

C言語のプリプロセッサは、マクロが使われたソースコードをプリミティブなC言語ソースコードに変換するものである。

プリプロセッサの出力は内部的に使われるだけで、ファイルに保存されるわけではない。ただし、たいていのコンパイラにはプリプロセッサの出力をファイルに保存するためのオプションが用意されている。

C言語標準のプリプロセッサの他に、Oracle Pro*C/C++もプリプロセッサの一種である。

プリプロセッサ指令(ディレクティブ)

プリプロセッサに対する指令を「ディレクティブ」と呼ぶ。C言語プリプロセッサのディレクティブは、先頭にシャープ(#)が付く。

C言語には次のようなディレクティブがある。

ディレクティブ 説明
#define マクロを定義する STANCE(スタンス) シートカバー【スタンダード】 パレット MK21S ブラック【代引不可】。
#ifdef シンボルが定義されているときに実行する。
#if 式が真のときに実行する。
#include ヘッダファイルをインクルードする。
#error コンパイラにエラーを発生させる。
#warning コンパイラに警告を発生させる。
#pragma マシンやOS固有の機能をサポートする。

#define

#define ディレクティブはマクロの定義を行う 【ジェットヘルメット FREEDOM ブラック S [バイク用品]】。C言語では数値や文字列、数式にに名前を付けて定数を定義することができます。

#define identifier replacement
#define identifier (parameter) replacement
identifier
マクロの識別子を指定する。識別子は大文字と小文字を区別する。マクロの識別子は慣習的に大文字で付けることが多い。

Proof プルーフ レインウェア ICE-ROAD II RAIN SUIT, BLACK/NEON Size:XXXL

■NGK パワーケーブル スズキ ワゴンRワイド MA61S/MB61S(車体No.117193~) MA61S/MB61S(車体No.117193~) K10A(DOHCターボ) H9.2~H11.5【08S】の販売と買取


ノーズブラ フロントエンドマスク カー ブラ 10 - 12 フォード マスタング GT


■NGK パワーケーブル スズキ ワゴンRワイド MA61S/MB61S(車体No.117193~) MA61S/MB61S(車体No.117193~) K10A(DOHCターボ) H9.2~H11.5【08S】 Oakley オークリー Mayhem Pro メイヘム プロ MX ゴーグル Pinned Race ピンドレース ブルーオレンジ クリアレンズ OO7051-29

↓↓↓スタッドレスタイヤ 4本セット グッドイヤー ICE NAVI CARGO 荷重8PR 155R13インチ 送料無料 Aa バン 商用車 LT;[ホイール1本(単品)] CRIMSON / CLUB LINEA L612 (BK) 17インチ×7.5J PCD:100 穴数:4 インセット:20;国産タイヤ・アルミホイール 新品 4本セット ◆ウェッズ レオニスWX Weds LEONIS WX◆225/35R19 19インチ235/35R19 19インチ (225/35-19 235/35-19)新品ヨコハマ ブルーアースA AE50 バランス調整済み! パーツ, 【国産タイヤ・ホイール 新品 4本セット】◆DOLCE EURO D EURO SPORT ドルチェユーロ Dユーロ スポーツ◆245/40R20 (245/40-20)新品トーヨー プロクセス C1S 【バランス調整済み!】, 【V63-78 パジェロ ジャオス】パジェロ V60/70系 99.09-02.07 5dr(ZX除く) JAOS オーバーフェンダー 未塗装 (エンドモール・ブラック/ステッカー・サテライトシルバー), 期間限定送料無料! スタッドレスタイヤ ホイール 新品 4本セット 205/65R16 16インチ (205-65-16) ヨコハマ ice GUARD6 ホットスタッフ Gスピード G01 バランス調整済み! 塩害軽減設計 パーツ, 【タイヤ&アルミホイールセット】 フレアワゴン MM32S CDM1 1545+45 4-100 マットブラック 【ブリヂストン/BRIDGESTONE】 NEXTRY/SNEAKER SNK2 165/55R15 純正15インチ;RS-R RS★R DOWN サスペンション リア トヨタ イプサム SXM15G 4WD NA 2000cc 1996年05月~2001年04月 [ACRE] アクレ ブレーキパッド フォーミュラ700C フロント用 ギャラン / エテルナ E34A 87/8~89/9 1800cc ※代引不可 ※北海道・沖縄・離島は送料2160円↓↓↓17インチ サマータイヤ セット【適応車種:レガシィツーリングワゴン(BH系)】WEDS ライツレー DK ブラックメタリックポリッシュ 7.0Jx17ZIEX ZE914F 215/45R17, 15インチ サマータイヤ セット【適応車種:マーチ(K13系)】A-TECH シュナイダー SQ27 メタリックブラック 5.5Jx15ヨコハマ エコス ES31 175/60R15, [Dotty] ダティ ラグジュアスポルト 本革パンチング シートカバー エリシオンプレステージ RR1 / RR2 / RR5 / RR6 H22/11~H24/6 7人乗 [S HDDナビスペシャルパッケージ] ※北海道は送料540円(税込) 沖縄・離島は送料1296円(税込), 送料無料 RMP 025F 225/55R17 TOYO DRB 4本SET 軽量 フローフォーミング XV フォレスター, 【 ポイント5倍 2019/01/01 0時~2019/01/01 24時 】 TTA502【オートタイプ】 データシステム TVキット 走行中にTVが見られる テレビキット


↓↓↓↓↓↓




↓↓↓↓↓↓

【プロジェクトミュー】NS-C(エヌエス・シー) スバル インプレッサ IMPREZA用 GC1/2 (ABS無)系 リヤブレーキパッド 品番:R910, YOKOHAMA ヨコハマ パラダ PARADA スペックX PA02 サマータイヤ 235/60R18 KYOHO 共豊 STEINER FORCED SF-V ホイールセット 4本 18インチ 18 X 7 +48 5穴 114.3, ホイール: RAYS TEAM DAYTONA KCX ホイールサイズ: 5.5J-16 タイヤ銘柄: BRIDGESTONE Playz PX-C タイヤサイズ: 175/60R16 タイヤ&ホイール4本セット【16インチ】, グロムパーツUSA グロムパーツユーエスエー フルカウル・セット外装 サイド+アンダーカウル一体型セットV1 カラー:イエロー GROMグロムJC61(16-), 【USトヨタ 直輸入純正品】Tundra タンドラ2007-2014年TRDサスペンションショックアブソーバー※リア1本

【割引クーポン配布中】KARO/カロ QUEST/クエスト レオーネ/AB# セダン用 商品番号:180;【送料無料】 225/55R18 18インチ BRIDGESTONE ブリヂストン プロドライブ GC-05N 7.5J 7.50-18 DELINTE デリンテ DH2(限定) サマータイヤ ホイール4本セット フジコーポレーション 【SYMS/シムス】フロントバンパー+リヤバンパー+リヤウイング for IMPREZA - GH Y3000GH003 【送料無料】 205/55R16 16インチ OZ SツーリズモGT 7J 7.00-16 FALKEN ファルケン ジークス ZE914F サマータイヤ ホイール4本セット;17インチアテンザスポーツワゴンGH系ENKEI パフォーマンスライン PF03 スパークルシルバー 7.0Jx17エナセーブ RV504 215/50R17

ファンベルトテンショナーショック ベンツ W638 Vクラス 638234用;【送料無料】ウェッズ レオニスGREILAアルファ 15インチ 165/55R15 165/55-15 eKスペース タイヤ付き ホイール 組込・バランス調整 4本セット

replacement
置き換える文字列を指定する。プリプロセッサによってマクロは対応する文字列に置き換えられる。
parameter
引数のリストを指定する。

#defineディレクティブの使用例を次に示す。この例では文字列と数値をマクロで定義している。

#include <stdio.h>
#define TAX_NAME "消費税"
#define TAX_RATE 0.08
void main() {
 double price = 2500;
 printf("%s %f\n", TAX_NAME, price * TAX_RATE);
}

マクロには引数を指定することができる。この例では数式をマクロで定義している。数式で使っている変数は、マクロを呼び出す際に引数として指定する。

#include <stdio.h>
#define MAX(A, B) A > B ? A : B
void main() {
 printf("%d\n", MAX(8, 4));
 printf("%d\n", MAX(3, 4));
}

■NGK パワーケーブル スズキ ワゴンRワイド MA61S/MB61S(車体No.117193~) MA61S/MB61S(車体No.117193~) K10A(DOHCターボ) H9.2~H11.5【08S】の店へようこそ!

Cコンパイラで既に定義されているマクロを次に示します 165/50R15 HIFLY ハイフライ HF805 HF805 weds LEONIS VX ウエッズ レオニス VX サマータイヤホイール4本セット。

既定義マクロ
識別子 説明
__FILE__ ソースファイル名 (Windows はフルパス、Solaris はファイル名のみ)
__LINE__ 行番号
__DATE__ コンパイル日付
__TIME__ コンパイル時間
__STDC__ ANSI規格対応ならば1、ANSI規格非対応ならば0
#if __STDC__
 /* ANSI規格対応コンパイラ用 */
#else
 /* ANSI規格非対応コンパイラ用 */
#endif
if (answer != 1000)
 printf("answer = %d %s:%d\n", answer, __FILE__, __LINE__);
answer = 99 compute.c:237

#ifdef

#ifdef プリプロセッサ命令は、シンボルが定義されているときに #ifdef から #endif までのプリプロセッサ命令を実行します。

#ifdef シンボル名
/* シンボルが定義されているときに実行する */
#endif

シンボルは #define プリプロセッサ命令で定義するか、Cコンパイラーのオプションで定義します。

シンボルが定義されていないときにプリプロセッサ命令を実行させるには、次のようにします。

#ifndef シンボル名
/* シンボルが定義されていないときに実行する */
#endif

シンボルが定義されているときと定義されていないときのプリプロセッサ命令を分けるには、次のようにします。

#ifdef シンボル名
/* シンボルが定義されているときに実行する */
#else
/* シンボルが定義されていないときに実行する */
#endif

#if

#if プリプロセッサ命令は、式が真のときに #if から #endif までのプリプロセッサ命令を実行します。

#if 式
 /* 式が真のときに実行する */
#endif

式が偽のときにプリプロセッサ命令を実行させるには、次のようにします。

#if !式
 /* 式が偽のときに実行する */
#endif

式が真のときと偽のときでプリプロセッサ命令を分けて実行させるには、次のようにします。

#if 式
 /* 式が真のときに実行する */
#else
 /* 式が偽のときに実行する */
#endif

条件分岐の条件式が複数ある場合は、#elifプリプロセッサ命令を使用する。

#if 式1
 /* 式1が真のときに実行する */
#elif 式2
 /* 式1が偽、かつ式2が真のとき実行する */
#elif 式3
 /* 式1が偽、かつ式2が偽、かつ式3が真のとき実行する */
#else
 /* 式1、式2及び式3がすべて偽のとき実行する */
#endif

次のようにすることで、#ifdef プリプロセッサ命令と同じことができます。

#if defined(シンボル名)
 /* シンボルが定義されているときに実行する */
#endif

また、次のようにすることで、 #ifndef プリプロセッサ命令と同じことができます。

#if !defined(シンボル名)
 /* シンボルが定義されていないときに実行する */
#endif

#include

C言語では様々なマクロを定義したヘッダファイルが用意されています。ヘッダファイルはインクルードファイルとも呼ばれます。 このヘッダファイルを読み込むには、 #includeプリプロセッサ・ディレクティブを使用します。

#include <ファイル名>

どのようなヘッダファイルがあるかは処理系によって異なりますので、ライブラリーのマニュアルを参照してください。典型的なヘッダファイルを次に示します。

C言語のヘッダファイル
ファイル名 説明
limits.h 実装に依存する値に関するヘッダファイル
stdio.h 標準入出力に関するヘッダファイル
signal.h シグナルに関するヘッダファイル
stdlib.h 標準ライブラリに関するヘッダファイル
string.h 文字列操作に関するヘッダファイル
sys/types.h システムに依存する変数タイプに関するヘッダファイル
iconv.h 文字コード変換ライブラリ(iconv API)のヘッダファイル
time.h 時刻操作に関するヘッダファイル
unistd.h UNIX標準に関するヘッダファイル
wchar.h ワイドキャラクタに関するヘッダファイル

C++のプリプロセッサでもC言語のヘッダファイルが利用できます。C++専用のヘッダファイルも用意されています。

C++のヘッダファイル
ファイル名 説明
cstddef C言語のsys/types.hなどに相当
cstdio C言語のstdio.hに相当
cstdlib C言語のstdlib.hに相当
cstring C言語のstring.hに相当
ctime C言語のtime.hに相当
cwchar C言語のwchar.hに相当

あらかじめ用意されているヘッダファイルだけでなく、自分で作ったヘッダファイルを読み込む(インクルードする)こともできます ハリケーン 120ロボットプルバック ハンドルセット 88年-00年 SR500、SR400 クローム H305-097C JP店。

#include "ファイル名"

ヘッダファイルのファイル名拡張子は慣習的に .h が使われていますので、自分でヘッダファイルを作成する場合もこれに習います。

自分で作成したヘッダファイルは任意のディレクトリに配置できます。ソースファイルと異なるディレクトリにヘッダファイルを配置した場合には、Cコンパイラのオプションでヘッダファイルの配置ディレクトリを指示しなければなりません ビルドアライン BUILD A LINE ステン T2-TYPE フロント スモーク ZX-10R 08-09 20671663S。

インクルードガード

システムから提供されているヘッダファイルは、同じヘッダーファイルを二重にインクルードしないよう工夫がされています。たとえば、Solaris の場合は次のようになっています。

#ifndef _STDIO_H
#define _STDIO_H
#ifdef __cplusplus
extern "C" {
#endif
......
#ifdef __cplusplus
}
#endif
#endif /* _STDIO_H */

Microsoft Windows (Visual C++) の場合は次のようになっています。

#ifndef _INC_STDIO
#define_INC_STDIO
#ifdef __cplusplus
extern "C" {
#endif
......
#ifdef __cplusplus
}
#endif
#endif /* _INC_STDIO */

自分でヘッダファイルを作る場合も、これに習うとよいでしょう。

#error

#errorは、コンパイラにコンパイルエラーを発生させるプリプロセッサ命令である。

#error エラーメッセージ

#warning

#warningは、コンパイラに警告を発生させるプリプロセッサ命令である。

#warning 警告メッセージ

#pragma

#pragma プリプロセッサ命令は、ホストマシンやオペレーティングシステムに固有の機能をサポートします。たとえば、データが置かれるメモリ領域の正確な管理や、バージョン情報をプログラムコードに埋め込んだりします。 #pragma プリプロセッサ命令は、マシンまたはオペレーティングシステム固有であり、通常コンパイラごとに使用できる機能が異なります。

#pragmra keyword

keywordに指定できるキーワードはCコンパイラによって異なる。

#pragma once

一度読み込まれたヘッダファイルを記憶しておき、同じヘッダファイルが再度読み込まれたときは、その読み込みを無視する。Visual C++VERTEX ヴァーテックス ピストン・ピストン周辺パーツ ピストン GAS GAS 125 03-10用(PISTON GAS GAS 125 03-10【ヨーロッパ直輸入品】) Φ53.98mm 【送料無料】 165/55R14 14インチ MLJ ハイペリオン HYPER DISH II 5J 5.00-14 ROADCLAW ロードクロウ RP570(限定) サマータイヤ ホイール4本セット フジコーポレーション やgccなど、多くのコンパイラで使用できる。インクルードガードと同じ役割を果たす。

#pragma once

#pragma comment

#pragma commentは、オブジェクトファイルや実行ファイルにコメントを書き込むプリプロセッサ命令であり、Visual C++で使用できる。

ライブラリ(lib)に対するコメントは、リンカのオプションやリンクするライブラリを指定できる。

#pragma commentプリプロセッサ命令を使用して、リンクするライブラリを指定する例を次に示す。

#pragma comment(lib, "jvm.lib")

#pragma commentプリプロセッサ命令を使用して、リンカのオプションを指定する例を次に示す。

#pragma comment(lib, "/nologo")

#pragma ident

Solarisのccでは、#pragma identでSCCSバージョン情報をLMFに埋め込むことができる。

#pragma ident "@(#)main.c 92/02/07"

マクロ置き換え演算子

プリプロセッサではマクロを置き換える演算子を使用できる。プリプロセッサで使えるマクロ置き換え演算子には次のものがある。

演算子 説明
# マクロ実引数を文字列化する 。
## 前後の字句列を結合する。

#

#演算子は、マクロ実引数を文字列化します。

#define strgen1(x) "x"
#define strgen2(x) x
#define strgen3(x) #x
char *p, *string = "abc";
p = strgen1(string); /* p = "x" */
p = strgen2(string); /* p = "abc" */
p = strgen3(string); /* p = "string" */

下記の例の場合、"main-" "func" ".c" が文字列連結されて、"main-func.c" となります。

#define PREFIX "main-"
#define SUFFIX ".c"
#define fname(name) PREFIX #name SUFFIX
p = fname(func); /* p = "main-func.c" */

##

##演算子は、前後の字句列を結合します。。

#define symadd(x, y) sym##x + sym##y
int sym1, sym2;
i = symadd(1, 2); /* sym1 + sym2 */
Tweet
スポンサーリンク
{yahoojp}jpprem01-zenjp40-wl-zd-77285