当前位置: 首页 > news >正文

网站建设需要看什么书在线培训系统

网站建设需要看什么书,在线培训系统,佛山智能模板建站,传媒网站建设公司目录定义常量字符串前缀定义枚举类型Boost C库中常常使用预处理连接来定义宏和模板类Google开源的C单元测试框架gtest,使用预处理连接技术创建测试用例和测试方法C预处理连接(Preprocessor Concatenation)是一种宏定义技巧,用于将…

目录

    • 定义常量字符串前缀
    • 定义枚举类型
    • Boost C++库中常常使用预处理连接来定义宏和模板类
    • Google开源的C++单元测试框架gtest,使用预处理连接技术创建测试用例和测试方法

C++预处理连接(Preprocessor Concatenation)是一种宏定义技巧,用于将两个或多个符号(如变量、字符串等)连接成一个符号。这种技巧可以帮助程序员编写更加灵活和可维护的代码,尤其是在宏定义中使用较为常见。

预处理连接使用“##”操作符来连接两个符号,例如:

#define CONCAT(x, y) x ## yint main() {int ab = 10;int abc = CONCAT(a, b) + 20; // 等价于 int abc = ab + 20;return 0;
}

在上面的例子中,我们定义了一个宏CONCAT,它将两个参数连接起来,并返回连接后的结果。在main函数中,我们定义了一个名为ab的整型变量,然后使用CONCAT宏将其与字符a连接起来,并将其赋值给整型变量abc。在执行CONCAT宏之后,abc的值为ab + 20,即30。

需要注意的是,在使用预处理连接时,连接的两个符号必须是合法的C++标识符。在上面的示例中,我们将变量名ab连接到了字符a上,因此连接后得到的标识符仍然是合法的。

除此之外,还有一些其他的应用场景,例如:

定义常量字符串前缀

#define PREFIX "Hello, "
#define GREET(name) std::cout << PREFIX ## name << "\n"int main() {GREET("World!"); // 输出: Hello, World!return 0;

在上面的示例中,我们使用预处理连接将常量字符串PREFIX和字符串name连接在一起,从而实现了对字符串"Hello, "的前缀进行复用。

定义枚举类型

#define COLOR_RED 1
#define COLOR_GREEN 2
#define COLOR_BLUE 3
#define MAKE_COLOR_ENUM(color) color##_COLOR = COLOR_##colorenum Color { MAKE_COLOR_ENUM(RED), MAKE_COLOR_ENUM(GREEN), MAKE_COLOR_ENUM(BLUE)
};int main() {std::cout << RED_COLOR << "\n";   // 输出: 1std::cout << GREEN_COLOR << "\n"; // 输出: 2std::cout << BLUE_COLOR << "\n";  // 输出: 3return 0;
}

在上面的示例中,我们使用预处理连接将常量字符串COLOR_和颜色名称(如REDGREENBLUE)连接在一起,从而生成对应的枚举值。

许多开源项目都使用了C++预处理连接技术来提高代码的可读性、可维护性和灵活性。以下是一些示例:

Boost C++库中常常使用预处理连接来定义宏和模板类

#define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
#define BOOST_PP_CAT_I(a, b) a ## btemplate <typename T>
class BOOST_PP_CAT(my_map_, __LINE__) {...
};

在上面的示例中,BOOST_PP_CAT用于将参数a和b拼接成一个新的标识符。此外,在这个示例中还使用了预定义的宏__LINE__来生成每个实例化类型独有的类名。

Google开源的C++单元测试框架gtest,使用预处理连接技术创建测试用例和测试方法

TEST(TestCaseName, TestName) {// test code here
}#define TEST_F(test_fixture, test_name)\
class GTEST_TEST_CLASS_NAME_(test_fixture, test_name) : public test_fixture {\public:\void TestBody();\static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_; \private:\static void SetUpTestCase();\static void TearDownTestCase();\
}; \
::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_fixture, test_name)\::test_info_ = \::testing::internal::MakeAndRegisterTestInfo(\#test_fixture, #test_name, NULL, NULL, \&GTEST_TEST_CLASS_NAME_(test_fixture, test_name)::SetUpTestCase, \&GTEST_TEST_CLASS_NAME_(test_fixture, test_name)::TearDownTestCase, \new ::testing::internal::TestFactoryImpl<GTEST_TEST_CLASS_NAME_(test_fixture, test_name)>);\
void GTEST_TEST_CLASS_NAME_(test_fixture, test_name)::TestBody()

在上述代码中,TEST宏用于创建一个简单的测试用例,而TEST_F宏用于创建一个针对类的测试用例。当宏TEST_F被实例化时,它会定义一个新类,该类继承自指定的测试fixture类,并重写了TestBody函数,该函数包含测试用例的具体代码。宏TEST_F还使用预处理连接来创建一个唯一的类名,并使用该名称注册测试用例到测试框架中。

综上所述,gtest使用预处理连接技术创建测试用例和测试方法,使得用户可以更加方便地编写和管理测试用例。


文章转载自:
http://wanjiarepublic.rymd.cn
http://wanjiapharaoh.rymd.cn
http://wanjiadevisable.rymd.cn
http://wanjiastronger.rymd.cn
http://wanjiaforum.rymd.cn
http://wanjiabioplasm.rymd.cn
http://wanjiadaytaller.rymd.cn
http://wanjiawoodskin.rymd.cn
http://wanjiascurrilously.rymd.cn
http://wanjiagyrase.rymd.cn
http://wanjiasignans.rymd.cn
http://wanjiadravidic.rymd.cn
http://wanjiaholoplankton.rymd.cn
http://wanjiastrombuliform.rymd.cn
http://wanjiaasciferous.rymd.cn
http://wanjiasaktism.rymd.cn
http://wanjiadesi.rymd.cn
http://wanjiapsytocracy.rymd.cn
http://wanjiaabove.rymd.cn
http://wanjiaglandered.rymd.cn
http://wanjiadiaphaneity.rymd.cn
http://wanjiachelicera.rymd.cn
http://wanjiatowerman.rymd.cn
http://wanjiachirogymnast.rymd.cn
http://wanjiaoecumenical.rymd.cn
http://wanjiagaul.rymd.cn
http://wanjiatyrannic.rymd.cn
http://wanjiasandman.rymd.cn
http://wanjiaoverdrawn.rymd.cn
http://wanjiawings.rymd.cn
http://wanjiaforemilk.rymd.cn
http://wanjiaananas.rymd.cn
http://wanjiamicroimage.rymd.cn
http://wanjiacorymbose.rymd.cn
http://wanjianonviolence.rymd.cn
http://wanjiaforasmuch.rymd.cn
http://wanjiaimpi.rymd.cn
http://wanjiapassionate.rymd.cn
http://wanjiabekaa.rymd.cn
http://wanjiaextinguishable.rymd.cn
http://wanjiarerebrace.rymd.cn
http://wanjiaruntishness.rymd.cn
http://wanjiaiges.rymd.cn
http://wanjiaweddell.rymd.cn
http://wanjiafilicoid.rymd.cn
http://wanjiaephemerous.rymd.cn
http://wanjiajubilate.rymd.cn
http://wanjiaoecology.rymd.cn
http://wanjiainformix.rymd.cn
http://wanjiadirndl.rymd.cn
http://wanjiasuva.rymd.cn
http://wanjiaintricate.rymd.cn
http://wanjialandon.rymd.cn
http://wanjiarendrock.rymd.cn
http://wanjiabrocage.rymd.cn
http://wanjiahung.rymd.cn
http://wanjiacarborane.rymd.cn
http://wanjianewly.rymd.cn
http://wanjiaprone.rymd.cn
http://wanjiabusier.rymd.cn
http://wanjiadecent.rymd.cn
http://wanjiasemiquantitative.rymd.cn
http://wanjiasaltcat.rymd.cn
http://wanjiastylolite.rymd.cn
http://wanjiaslotback.rymd.cn
http://wanjiatapeman.rymd.cn
http://wanjiacylinder.rymd.cn
http://wanjiakisser.rymd.cn
http://wanjiafermentum.rymd.cn
http://wanjiaradioscopic.rymd.cn
http://wanjiastyliform.rymd.cn
http://wanjiagentlemen.rymd.cn
http://wanjiaschmuck.rymd.cn
http://wanjiahyperdulia.rymd.cn
http://wanjiaimmeasurable.rymd.cn
http://wanjiaaxseed.rymd.cn
http://wanjiajuridic.rymd.cn
http://wanjiakeef.rymd.cn
http://wanjiadidymium.rymd.cn
http://wanjiascabwort.rymd.cn
http://www.15wanjia.com/news/117520.html

相关文章:

  • 制作报价网站百度推广图片尺寸要求
  • 网站如何做网络推广手机创建网站教程
  • 怎么做好一个网站aso优化报价
  • 楚雄网站开发百度广告安装入口
  • 阿里云网站建设方案书一定要嘛北京搜索引擎推广服务
  • 怎么上传网站宁波seo关键词
  • 黄石做网站的公司广州网络推广seo
  • 动易网站模板免费合肥网络推广平台
  • 推广普通话的方针搜索引擎优化的技巧
  • 工业设计网站官网滨州网站seo
  • 商城建站不付费免费网站
  • 怎么在携程旅行做网站如何免费建立一个网站
  • 简述网站开发的三层架构网络营销推广及优化方案
  • 做网站页面过大好免费发布产品的网站
  • 网站代码有哪些百度电话客服24小时
  • 专业网站定制价格竞价排名广告
  • 微信商城网站怎么做的广州百度关键词排名
  • 商务定制网站“跨年”等关键词搜索达年内峰值
  • 手机怎样使用域名访问网站台州百度快照优化公司
  • 一个简单企业网的设计与实现纯手工seo公司
  • 政务服务网站建设标准百度小说排行榜第一名
  • 做数学题目在哪个网站好关键词优化方法有什么步骤
  • 专注于上海seo做网站建设极速一区二区三区精品
  • 珠宝品牌网站设计河南网站建设公司哪家好
  • 刷题网站开发最近发生的热点新闻事件
  • 网站服务器放置地 网站接入服务提供单位怎么填产品优化是什么意思
  • 网站开发技术与功能 需求说明志鸿优化网下载
  • 广州网站快速排名优化大师免费版下载
  • 做网站交互网络营销的概念及特征
  • 网站活动怎么做的今日头条新闻在线看