首页 > 编程语言 >C++ 宏定义

C++ 宏定义

时间:2023-07-03 19:11:38浏览次数:42  
标签:TESTS RUN 定义 DRUN C++ add definitions target

看到一段 C++ 代码,大致是说如果如果定义了 RUN_ALL_TESTS 就执行下面的代码,遂研究了一下。

#if defined(RUN_ALL_TESTS)
    // some code here
#endif

首先 RUN_ALL_TESTS 是定义的宏:

#define RUN_ALL_TESTS    // 空字符串
#define RUN_ALL_TESTS 1  // 赋值为 1

#if defined 为条件编译指令,它并不会考虑宏定义中有没有值。

#if defined(RUN_ALL_TESTS)
    // some code here
#else
    // some other code
#endif

除了在 .cpp 文件中定义,是否有其他方法对 RUN_ALL_TESTS 进行指定呢?可以在编译阶段进行指定:

  • CMakeLists.txt 文件中进行指定

    • add_definitions(-DRUN_ALL_TESTS) 或者 add_definitions(-DRUN_ALL_TESTS=1)

    • add_definitions已经逐渐被弃用,更推荐使用目标明确的 target_compile_definitions

      add_executable(my_target test.cpp)
      target_compile_definitions(my_target PRIVATE RUN_ALL_TESTS)
      
  • 在编译时 cmake -DRUN_ALL_TESTS=1 .
    (我测试时 cmake -DRUN_ALL_TESTS= . 不起作用,即必须赋值)

  • 在编译时 g++ -D RUN_ALL_TESTS myfile.cpp -o myfile

标签:TESTS,RUN,定义,DRUN,C++,add,definitions,target
From: https://www.cnblogs.com/zkmjolnir/p/17523745.html

相关文章

  • Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别
    有个需要是需要在安装包安装初始化时安装MicrosoftVisualc++2013Redistributable也就是判断软件安装前需不需要运行vcredist_x64.exe和VC_redist.x64.exe这两个程序第一反应就是可以通过注册表判断是否已经安装过环境但测试发现需求的两个版本不同,注册表位置竟然也不......
  • 微信小程序uniapp解决真机顶部自定义菜单显示(手机状态栏覆盖)
    1.在data里面加入参数statusBarHeight:uni.getSystemInfoSync().statusBarHeight,//状态栏高度2.对返回按钮处理<!--空出状态栏高度--><view:style="'height:'+statusBarHeight+'px;'"></view><!--返回按钮--><di......
  • 《深入探索C++对象模型》- 第二章 - 构造函数语义学 - 笔记
    PDF版本https://www.aliyundrive.com/s/oQJJiJfQmU2......
  • C++面试记录——2023.7.3
    1、什么是虚函数?(基础反而卡住了,往多态方面说了)  2、虚函数实现原理?(不知道) 3、什么是完美转发?(没学深,浅浅说了跟右值引用相关) 4、构造函数有哪些?(默认、带参、拷贝、移动) 5、现有一个右值变量,如何调用移动构造函数?(麻了,不会) 6、知道lambda表达式吗?(C++11特性,匿......
  • react之自定义hooks
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址任何相对独立、复用性强的逻辑,都可以extract为自定义Hook,自定义Hook是一种复用React的状态逻辑的函数。自定义Hook的主要特点是:抽象组件间的状态逻辑,方便复用让功能组件更纯粹,更易于维护自定义Hook可......
  • C代码中如何使用链接脚本中定义的变量?
    交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载)交流群二:QQ群:536785813(单片机-嵌入式)公 众 号:百问科技版本日期作者说明V12020韦东山技术文档在链接脚本中,经常有这样的代码:SECTIONS{......=ALIGN(4);.rodata:{*(.rodata)}.=ALIGN(4);.data:{*(.d......
  • c++实现多线程消息通信队列
    #ifndef_SYNC_SIMPLEQUEUE_QUEUE_HPP_#define_SYNC_SIMPLEQUEUE_QUEUE_HPP_#include<queue>usingnamespacestd;namespaceutility{template<typenameT>classSyncSimpleQueue{public:voidput(constT&msg){std::uniqu......
  • C++面试八股文:std::array如何实现编译器排序?
    C++面试八股文:std::array如何实现编译器排序?某日二师兄参加XXX科技公司的C++工程师开发岗位第25面:面试官:array熟悉吗?二师兄:你说的是原生数组还是std::array?面试官:你觉得两者有什么区别?二师兄:区别不是很大,原生数组(非动态数组)和std::array都在栈上开辟空间,初始化的时候......
  • 【C++】C++类和对象 ( 看完这篇你也能学会 ~ )
    ☑️前言......
  • Mac中VscodeC++万能头文件配置bits/stdc++.h
    /Library/Developer/CommandLineTools/usr/include路径下创建bits文件夹新建stdc++.h头文件,内容如下//C++includesusedforprecompiling-*-C++-*-//Copyright(C)2003-2018FreeSoftwareFoundation,Inc.////ThisfileispartoftheGNUISOC++Library.T......