色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++編程中帶#條件語(yǔ)句的用法和作用詳解

C語(yǔ)言專家集中營(yíng) ? 2017-12-11 16:18 ? 次閱讀

1#和##的作用和用法

C/C++ 的宏中,#的功能是將其后面的宏參數(shù)進(jìn)行字符串化操作,簡(jiǎn)單說就是在對(duì)它所引用的宏變量通過替換后在其左右各加上一個(gè)雙引號(hào)。##連接符號(hào)由兩個(gè)井號(hào)組成,其功能是在帶參數(shù)的宏定義中將兩個(gè)子串聯(lián)接起來,從而形成一個(gè)新的子串。但它不可以是第一個(gè)或者最后一個(gè)子串。

#include using namespace std;#define WARN_IF(EXP) if(EXP) cerr << #EXP << endl;#define paster( n ) cout << "token" << #n << " = " << n << endl;#define _CONS(a, b) int(a##+##b)#define _STRI(s) #svoid main() { ? ?int div = 0; ? ?WARN_IF(div == 0); ? ? ? ? ? // prints : div == 0 ? ?paster(9); ? ? ? ? ? ? ? ? ? // prints : token9 = 9 ? ?cout << _CONS(1, 2) << endl; ? ? // prints : 3 ? ?cout << _STRI(INT_MAX) << endl; ?// prints : INT_MAX}

凡是宏定義里有用#或##的地方宏參數(shù)是不會(huì)再展開,例如_STRI(INT_MAX)中的INT_MAX就不會(huì)被展開為2147483647。如果想要使其中的宏參數(shù)展開,則需要多加一層中間轉(zhuǎn)換宏:

#define STRI(s) _STRI(s)cout << STRI(INT_MAX) << endl; // prints : 2147483647

加這層宏的用意是把所有宏的參數(shù)在這層里全部展開,那么在轉(zhuǎn)換宏里的宏就能得到對(duì)應(yīng)的宏參數(shù)。

接下來,我們來了解通過預(yù)處理指令創(chuàng)建條件編譯參數(shù)控制代碼編譯的一些用法。

2#include的用法

包含頭文件的操作,通常有兩種格式:

#include #include "header-file"

<>和""表示編譯器在搜索頭文件時(shí)的順序不同:

<>表示從系統(tǒng)目錄下開始搜索,然后再搜索PATH環(huán)境變量所列出的目錄,不搜索當(dāng)前目錄

""是表示從當(dāng)前目錄開始搜索,然后是系統(tǒng)目錄和PATH環(huán)境變量所列出的目錄。

所以,系統(tǒng)頭文件一般用<>,用戶自己定義的則可以使用"",加快搜索速度。除此外,寫代碼多了就會(huì)發(fā)現(xiàn),有些頭文件之間的相互包含是有隱藏依賴關(guān)系的,一定要加以注意。Google C++ Style Guide中也強(qiáng)調(diào)使用標(biāo)準(zhǔn)的頭文件包含順序可增強(qiáng)可讀性, 避免隱藏依賴:

1 相關(guān)文件(優(yōu)先位置,如dir2/foo2.h)2 C系統(tǒng)文件3 C++ 系統(tǒng)文件4 其他庫(kù)的.h文件5 本項(xiàng)目?jī)?nèi).h文件

3#if,#elif,#else,#endif用法

// structure 1#if constant_expression#else#endif// structure 2#if constant_expression#elif constant_expression#endif

這里的結(jié)構(gòu)跟常見的if...else和if...else if...else語(yǔ)句類似,當(dāng)#if后的條件為非零(true)時(shí),編譯#if和#else或#elif之間的代碼,否則編譯#else和#endif之間的代碼(或者判斷#elif后的條件是否非零(true),決定是否編譯#elif和#endif之間的代碼)。

#if 1 cout << "Hello world!" << endl;#else ? ?cout << "Nice to meet you!" << endl;#endif// prints : Hello world!

#if 1 cout << "Hello world!" << endl; #elif 1 ? ?cout << "Nice to meet you!" << endl; #endif// prints: Hello world!// ? ? ?Nice to meet you!

4#define,#undef,#ifdef,#ifndef用法

#define是大家都常見的宏定義方法,用法結(jié)構(gòu)為:

// #define identifier replacement-code#define PI 3.1415926#define ADD(x,y) (x + y)

#undef顧名思義,就是從該處取消前面已經(jīng)定義的宏,如果標(biāo)識(shí)符當(dāng)前沒有被定義稱為一個(gè)宏名稱,就會(huì)忽略該指令:

// #undef identifier#undef PI

#ifdef和#ifndef含義相反,前者含義為如果定義了該宏,則編譯相應(yīng)代碼;后者則為如果沒有定義該宏,則編譯相應(yīng)代碼。通用結(jié)構(gòu)為:

/* * #ifdef identifier * #else or #elif * #endif **/ #define DEBUG#ifdef DEBUG cout << "This is a debug message." << endl;#endif// prints : This is a debug message./* * #ifndef identifier * #else or #elif * #endif **/ #ifndef DEBUG ?cout << "This is a debug message." << endl;#endif// prints nothing

編程時(shí),為了避免頭文件重定義,經(jīng)常使用的就是#define配合條件編譯解決:

#ifndef MY_HEADER_FILE_H#define MY_HEADER_FILE_H// ...class MyHeaderFile { // ....};#endif // MY_HEADER_FILE_H

除此以外,還有#pragma once的用法,只要在頭文件的最開始加入這條指令就能夠保證頭文件被編譯一次。(在所有的預(yù)處理指令中,#pragma指令可能是最復(fù)雜的了,它的作用是設(shè)定編譯器的狀態(tài)或者是指示編譯器完成一些特定的動(dòng)作,本文不多講述。)

5#line用法

#line命令是用于更改__LINE__和__FILE__變量的值。__FILE__和__LINE__描述被讀取的當(dāng)前文件和所在行數(shù)。

// #line line-number filenameint main() {#line 10 "main.cpp" cout << __FILE__ << " " << __LINE__ << endl; }// prints : main.cpp 10

6#error用法

#error會(huì)直接導(dǎo)致程序停止編譯并輸出指定的錯(cuò)誤信息

// #error message#ifndef VERSION#error Version number not specified.#endif// The compiler will halt compiling and return with the specified error message: // fatal error C1189: #error : Version number not specifi

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137615

原文標(biāo)題:C++ "#"的作用和用法

文章出處:【微信號(hào):C_Expert,微信公眾號(hào):C語(yǔ)言專家集中營(yíng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言中if語(yǔ)句、if-else語(yǔ)句和switch語(yǔ)句詳解

    C語(yǔ)言中,有三種條件判斷結(jié)構(gòu):if語(yǔ)句、if-else語(yǔ)句和switch語(yǔ)句。
    發(fā)表于 08-18 16:36 ?1.2w次閱讀
    <b class='flag-5'>C</b>語(yǔ)言中if<b class='flag-5'>語(yǔ)句</b>、if-else<b class='flag-5'>語(yǔ)句</b>和switch<b class='flag-5'>語(yǔ)句</b><b class='flag-5'>詳解</b>

    Rust的 match 語(yǔ)句用法

    執(zhí)行不同的代碼,這在處理復(fù)雜的邏輯時(shí)非常有用。在本教程,我們將深入了解 Rust 的 match 語(yǔ)句,包括基礎(chǔ)用法、進(jìn)階用法和實(shí)踐經(jīng)驗(yàn)等方面。 基礎(chǔ)
    的頭像 發(fā)表于 09-19 17:08 ?960次閱讀

    CC++const的用法比較

    為0)。針對(duì)Cconst的上述局限性,C++作出了重大的改進(jìn)。在C++,可以使用const來定義常數(shù),因?yàn)閏onst在編譯器的控制范疇內(nèi)
    發(fā)表于 11-11 10:00

    淺談C語(yǔ)言goto語(yǔ)句用法

    今天一起來分析C語(yǔ)言,goto語(yǔ)句用法。goto語(yǔ)句用法goto語(yǔ)句,為無(wú)
    發(fā)表于 05-06 09:16

    C++語(yǔ)言基礎(chǔ)講解視頻do while循環(huán)語(yǔ)句

    C++語(yǔ)言基礎(chǔ)講解視頻do while循環(huán)語(yǔ)句
    發(fā)表于 01-14 15:32 ?5次下載

    C++語(yǔ)言基礎(chǔ)講解視頻Switch分支條件判斷語(yǔ)句

    C++語(yǔ)言基礎(chǔ)講解視頻Switch分支條件判斷語(yǔ)句
    發(fā)表于 01-14 08:00 ?7次下載

    C++語(yǔ)言基礎(chǔ)講解視頻while循環(huán)語(yǔ)句

    C++語(yǔ)言基礎(chǔ)講解視頻while循環(huán)語(yǔ)句,喜歡的朋友可以下載來學(xué)習(xí)。
    發(fā)表于 01-14 15:31 ?3次下載

    淺談關(guān)于DSP6000C/C++語(yǔ)言和匯編語(yǔ)言的混合編程的方法

    一、混合編程的方法主要有以下幾種: (1)獨(dú)立編寫C語(yǔ)言程序和匯編程序,分別編譯形成各自的目標(biāo)代碼塊, 然后用連接器將兩種模塊連接起來。 (2)直接在C/
    發(fā)表于 10-24 10:10 ?1次下載

    C++語(yǔ)言程序設(shè)計(jì)時(shí)如何控制語(yǔ)句?

    本文檔的主要內(nèi)容詳細(xì)介紹的是C++語(yǔ)言程序設(shè)計(jì)時(shí)如何控制語(yǔ)句?內(nèi)容包括了1 C++語(yǔ)句概述2 if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)3 switch
    發(fā)表于 09-20 14:51 ?2次下載
    <b class='flag-5'>C++</b>語(yǔ)言程序設(shè)計(jì)時(shí)如何控制<b class='flag-5'>語(yǔ)句</b>?

    C++程序設(shè)計(jì)教程之語(yǔ)句的詳細(xì)資料說明

    本文檔詳細(xì)介紹的是C++程序設(shè)計(jì)教程之語(yǔ)句的詳細(xì)資料說明主要內(nèi)容包括了:1.說明語(yǔ)句 ( Declarative Statements ) ,2.條件
    發(fā)表于 02-28 11:11 ?1次下載
    <b class='flag-5'>C++</b>程序設(shè)計(jì)教程之<b class='flag-5'>語(yǔ)句</b>的詳細(xì)資料說明

    C語(yǔ)言和C++的特點(diǎn)與用法詳細(xì)說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言和C++的特點(diǎn)與用法詳細(xì)說明。
    的頭像 發(fā)表于 12-26 10:58 ?4466次閱讀

    條件判斷語(yǔ)句(if語(yǔ)句

    條件判斷語(yǔ)句,作為任何編程語(yǔ)言都不可缺少的內(nèi)容,在C語(yǔ)言中也不例外。條件判斷語(yǔ)句可以讓程序的功能
    的頭像 發(fā)表于 02-21 15:24 ?3655次閱讀
    <b class='flag-5'>條件</b>判斷<b class='flag-5'>語(yǔ)句</b>(if<b class='flag-5'>語(yǔ)句</b>)

    詳解Python條件語(yǔ)句

    在 Python ,if...else 是一種條件語(yǔ)句,可以根據(jù)給定的條件執(zhí)行不同的操作。這個(gè)語(yǔ)句通常用于控制程序的流程。
    的頭像 發(fā)表于 04-19 15:39 ?852次閱讀

    C++ std::tie函數(shù)的作用用法

    C++std::tie函數(shù)的作用就是從元素引用中生成一個(gè)tuple元組,其在頭文件定義
    的頭像 發(fā)表于 07-18 17:28 ?888次閱讀

    assign語(yǔ)句和always語(yǔ)句用法

    用法和功能。 一、Assign語(yǔ)句 Assign語(yǔ)句的定義和語(yǔ)法 Assign語(yǔ)句用于在HDL連續(xù)賦值,它允許在設(shè)計(jì)
    的頭像 發(fā)表于 02-22 16:24 ?2763次閱讀
    主站蜘蛛池模板: 色人格影院第四色 | 伊人久久99热这里只有精品 | 男人一进一出桶女人视频 | 国产午夜不卡在线观看视频666 | 大桥未久电影在线观看 | 99久久精品免费国产一区二区三区 | 在线天天看片视频免费观看 | 日韩精品久久久久久久电影 | 国产精品嫩草影院一区二区三区 | 国产午夜精品视频在线播放 | 狼与美女谐音歌词 | 亚洲伊人久久大香线蕉综合图片 | 久久久久综合一本久道 | 久久久久久久久人体 | 亚洲国产在线2o20 | 91免费精品国自产拍在线可以看 | 99精品视频 | 久久精品视频16 | 99在线精品免费视频 | 99久久免热在线观看 | 99视频这里只有精品 | 国产日韩欧美有码在线视频 | 丰满少妇67194视频 | 无码人妻精品一区二区蜜桃色欲 | 久久re热线视频精品99 | 午夜熟女插插XX免费视频 | 亚洲女人毛片 | 亚洲国产精品嫩草影院久久 | 日韩精品亚洲专区在线影院 | 国产精品青青青高清在线密亚 | 天天看高清影视在线18 | 国产小视频免费在线观看 | 免费三级现频在线观看 | 免费国产成人 | 亚洲色图激情小说 | 麻豆婷婷狠狠色18禁久久 | 三级网站视频 | 亚洲 自拍 欧洲 视频二区 | 国产精品ⅴ视频免费观看 | 无修肉动漫在线观看影片 | 99精彩视频在线观看 |