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

佛山网站建设明细木门行业做网站有什么好处

佛山网站建设明细,木门行业做网站有什么好处,去哪个网站找建筑图纸,网站建设毕业设计刻光盘在做一些日志输出的工作时#xff0c;想要获取当前文件名#xff0c;而不是冗长的文件路径。路径获取往往和各家os底层函数优化。C/C标准中定义了一些预处理宏#xff0c;可以帮助我们获取文件路径。我们希望能够在编译期而不是在运行期做这个事情#xff0c;避免额外的性能…在做一些日志输出的工作时想要获取当前文件名而不是冗长的文件路径。路径获取往往和各家os底层函数优化。C/C标准中定义了一些预处理宏可以帮助我们获取文件路径。我们希望能够在编译期而不是在运行期做这个事情避免额外的性能消耗。同时希望有一些跨平台的解决方案。以下是一些思路: 方法1运行期去除前缀 FILE 可以在编译期获取绝对路径__BASE_NAME__可以获取相对路径但是不具有跨平台性。 我们想通过编译期来解决这个问题但是暂时未找到能支持的编译选项。似乎只能在运行期做路径切割。 1.通过__FILE__预处理期间获得路径。 2.定义inline函数或者宏处理路径。strchr是一个有帮助的函数即在str找到ch的指针。 #define __FILENAME__ (strrchr(__FILE__, /) ? strrchr(__FILE__, /) 1 : __FILE__)方法2编译器函数优化 使用__builtin_strrchr替换strchr。 GNU工具链提供了一些常见的编译器优化函数可以在编译期进行函数调用。这样就可以把路径切换转换到编译期处理。 缺点是需要特定的编译器支持GNU需要检查下自己的编译器是否支持或者查看GNU对应版本的文档。 #define __FILENAME__ (__builtin_strrchr(__FILE__, /) ? __builtin_strrchr(__FILE__, /) 1 : __FILE__)方法3在构建脚本中处理 在编译脚本中定义预处理宏__FILENAME__, 使用shell去除路径后的文件名在编译期将文件名复制给__FILENAME__宏。 使用cmake构建脚本 set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -D__FILENAME__\$(subst ${CMAKE_SOURCE_DIR}/,,$(abspath $))\)set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -D__FILENAME__$(notdir $))在makefile中更改 CXX_FLAGS-D__FILENAME__\$(subst $(SOURCE_PREFIX)/,,$(abspath $))\Tips当定义___FILENAME__预处理器宏时可能需要开启-Wno-builtin-macro-redefined编译选项。 set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-builtin-macro-redefined)方法4.0使用constexpr在编译期处理 C11只允许在constexpr函数中使用return-statementC14取消了这个限制。 C11版本 constexpr const char* str_end(const char* str) {return *str ? str_end(str 1) : str; } constexpr bool str_slant(const char* str) {return *str / ? true : (*str ? str_slant(str 1) : false); } constexpr const char* r_slant(const char* str) {return *str / ? (str 1) : r_slant(str - 1); } constexpr const char* file_name(const char* str) {return str_slant(str) ? r_slant(str_end(str)) : str; }C14版本 constexpr const char* file_name(const char* path) {const char* file path;while (*path) {if (*path /) {file path;}}return file; }一个神奇的宏 定义constexpr函数 using cstr const char * const;static constexpr cstr past_last_slash(cstr str, cstr last_slash) {return*str \0 ? last_slash :*str / ? past_last_slash(str 1, str 1) :past_last_slash(str 1, last_slash); }static constexpr cstr past_last_slash(cstr str) { return past_last_slash(str, str); }然后定义一个方便的宏方法 #define __SHORT_FILE__ ({constexpr cstr sf__ {past_last_slash(__FILE__)}; sf__;})方法4.1 验证在编译期所做的操作 编译源码 source file name is foo/foo1/foo2/foo3/foo4.cpp useg -o foo.exe foo/foo1/foo2/foo3/foo4.cpp -stdc11 --save-temps to compile this file.反编译后查看汇编代码 .file foo4.cpp.section .rodata .LC0:.string foo/foo1/foo2/foo3/foo4.cpp.text.globl main.type main, function main: .LFB4:.cfi_startprocpushq %rbp.cfi_def_cfa_offset 16.cfi_offset 6, -16movq %rsp, %rbp.cfi_def_cfa_register 6subq $16, %rspmovq $.LC019, -8(%rbp) movl $.LC019, %edicall putsmovl $0, %eaxleave.cfi_def_cfa 7, 8ret.cfi_endproc .LFE4:.size main, .-main.ident GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4.section .note.GNU-stack,,progbitsmovl $.LC019, %edi 中.LC0 19直接是去掉路径前缀的地址。
http://www.ho-use.cn/article/10820151.html

相关文章:

  • 天津集体建设用地出售 网站优秀网站建设哪家专业
  • 公司设计网站定制线上销售模式有哪些
  • wordpress 免费建站网站建设公司专业
  • 做网站用的语言北京地产网站建设
  • 网站做淘客 还可以吗做网站用什么语言快
  • 许昌市建设信息网站手机制作app教程
  • 签订网站建设合同应注意iis7 安装 wordpress
  • 管理类手机网站hm网上商城
  • 不让人看出wordpress建的站发稿是什么意思
  • 什么是网站html静态化苏州公司名称查询
  • 桐庐县住房和城乡建设局网站wordpress页面加上html
  • 在网上做黑彩网站会怎样官网服务器一般一年多少钱
  • 网站开发定制模板网站建设安卓开发公司
  • 深圳北站网站建设资深的环保行业网站开发
  • 聊城市公司网站建站推广平台赚佣金
  • php 网站软件工程公司
  • 汕头网站制作公司价格html5响应式模板
  • 个人网站是怎么样的广东网站建设联系电话
  • 我想做跑腿网站怎么做网站浏览图片怎么做
  • h5响应式网站制作wordpress外网地址
  • 做旅游宣传不错的网站网站建设到上线的步骤过程
  • 网页传奇游戏托套路站长工具seo综合查询怎么看数据
  • 玉林住房和城乡建设局网站官网智能网站开发
  • 企业备案增加网站明薇通网站建设价格
  • wordpress网站 添加微信中山网络推广seo专业
  • 58同城建筑招聘网最新招聘seo是啥职业
  • 自己做网站 什么自己怎么建设手机网站首页
  • 山东网站优化公司钟情建网站公司
  • 网站设计速成服装网站的建设方案
  • 抚顺您做煮火锅网站单位邮箱怎么查询