C predefined macros __FILE__,__LINE__,__func__
C predefined macros __FILE__,__LINE__,__func__
- \_MSC_VER
- \_\_FILE\_\_,\_\_LINE\_\_,\_\_func__
- 參考連結
_MSC_VER
不同的編譯器(gcc,clang,msvc)會設定自己的pre-processor macros。我們可以用這些macro來判斷目前代碼是運行在什麼平台上,或是由什麼編譯器編譯的。
如果使用的是msvc(Microsoft Visual C++)編譯器,那麼將會有_MSC_VER
這個macro。我們可以檢查這個macro是否存在,以此來判斷目前使用的編譯器是否為msvc。
__FILE__,__LINE__,__func__
C語言中有predefined identifier:__func__
,表示所處函數的名稱。
另外還有predefined macro:__FILE__
及__LINE__
,分別表示當前檔案名稱及所在行數。
在TensorRT/samples/common/common.h
中:
#ifdef _MSC_VER
#define FN_NAME __FUNCTION__
#else
#define FN_NAME __func__
#endif//...#define CHECK_RETURN_W_MSG(status, val, errMsg) \do \{ \if (!(status)) \{ \std::cerr << errMsg << " Error in " << __FILE__ << ", function " << FN_NAME << "(), line " << __LINE__ \<< std::endl; \return val; \} \} while (0)
注意到以下這段:
#ifdef _MSC_VER
#define FN_NAME __FUNCTION__
#else
#define FN_NAME __func__
#endif
它首先判斷目前使用的編譯器是否為msvc,如果是,則採用__FUNCTION__
做為FN_NAME
,若非msvc,則採用C99中就有的__func__
。
這是因為:
Visual C++, which does not support C99 and
does not yet support all of C++0x, does not provide __func__.
即msvc並未提供__func__
這個macro,所以我們才使用__FUNCTION__
來替代。
參考連結
Home / Guide to predefined macros in C++ compilers (gcc, clang, msvc etc.)
Predefined Identifier __func__ in C
What’s the difference between __PRETTY_FUNCTION__, __FUNCTION__, __func__?
C predefined macros __FILE__,__LINE__,__func__相关推荐
- __FILE__, __LINE__, __FUNCTION__
今天看源码,考到了如下代码,有点不理解.代码如下: #ifndef DBG_PRINTF(_x_) #ifdef WEBDBG #define DBG_PRINTF(_x_) \ do{ \ prin ...
- PHP 魔术常量,__LINE__,__FILE__,__DIR__等等8个常用魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量. 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了. 有八个魔术常量它们的值随着它们 ...
- 宏的高级使用--##,__VA_ARGS__, __FILE__, __FUNCTION__等
参考网址:http://blog.csdn.net/yiya1989/article/details/7849588 参考网址:http://fanrey.iteye.com/blog/1709416 ...
- __FILE__, __FUNCTION__, __LINE__学习篇,谨以此文告别那无知的岁月
printf("\n%s,%s,%d\n", __FILE__, __FUNCTION__, __LINE__); 经常会在代码中看到类似于上面的log, 虽然一直很好奇__FIL ...
- php路径详解,详解与PHP路径相关的dirname,realpath,__FILE__函数
在文件中比如:程序根目录在:E:\wamp\www 中 1. __FILE__ 当前文件的绝对路径 如果在index.php中调用 则返回 E:\wamp\www\index.php 下面再看一下 程 ...
- GCC 预处理的宏 (predefined macros)
关于宏(macro) 在很早很早就知道, 但是只限于能看懂,在自己编程中从未使用.但是,在Powe8上将GATK HaplotypeCaller的GPU实现和SIMD实行并行处理的时候,遇到了很大的问 ...
- 【Note2】route,iptables,macvlan,sol
文章目录 1.linux的route指令:route add 1.1 案例:从ubuntu机器ping 199.199.199.199,配置路由使能通 2.防火墙iptables:(ip+tables ...
- 使用__FILE__和__LINE__定位错误
问题:当运行时错误产生时,我怎样才能得到包含C++文件名和行号的字符串信息? 回答:在C++中的__FILE__预编译指示器包含了被编译的文件名,而__LINE__则包含了源代码的行号.__FILE_ ...
- 引用内部函数绑定机制,R转义字符,C++引用,别名,模板元,宏,断言,C++多线程,C++智能指针
1.引用内部函数绑定机制 #include<iostream> #include<functional> usingnamespacestd; usingnamespac ...
最新文章
- flask与简单的form表单
- 线索二叉树怎么画_固原超级记忆技巧课程怎么学_蒙正智升教育
- LeetCode 最大正方形
- python安装sqap_python文件I/O
- 接口实例(C#,IShape)【C#】
- git 上传项目到linux仓库_使用子模块和子树来管理 Git 项目 | Linux 中国
- python的取负运算_python 负数取模运算实例
- 软件测试记录表模版,简单软件测试报告模板.doc
- linux 1394驱动下载,1394驱动
- win10电脑双屏如何设置不同的桌面
- 百度搜索引擎都有哪些算法
- 两步彻底关闭Windows默认共享文件夹(含IPC$)
- 1、马克思主义哲学是科学的世界观和方法论
- 基于eBPF的开源工具Kindling之page-fault事件可观测性实现机制
- 第一次写writeup
- 怎么彻底处理windows下遇到的广告流氓软件例如:双11天喵、霸业传奇、贪玩蓝约等
- 微信小程序中显示换行、空格
- C语言编程从键盘输入n值
- 从实体密保卡到动态口令令牌
- android点击号码打电话,android-拨打电话单击一个按钮
热门文章
- 【Java编程思想】读书笔记(二)第六章---第十章
- 计算机考研数学考数学二的专业,考研常识:哪些专业考数学二?
- 计算机屏幕节省电,电脑显示器如何省电
- 大数据产品开发流程规范_大数据系统开发步骤流程是怎样的
- Incapsula reese84 分析与破解
- 锤子android 7,锤子新机坚果Pro配置放出:骁龙626处理器、Android 7.1.1系统
- con 元器件符号_PROTEUS中元器件符号
- python独立样本t检验 图_SPSS实操两个独立样本均数比较的t检验
- 学习Nisy作者c语言教程笔记1
- hrbp 牵着鼻子走_8招让你不再被职场牵着鼻子走