首页 > 其他分享 >静态库静态全局变量出现问题

静态库静态全局变量出现问题

时间:2022-11-18 17:33:28浏览次数:33  
标签:std map name 静态 register 问题 fun 全局变量

背景

  • 静态库提供注册接口
  • 主程序调用注册接口注册
  • 主程序获取注册结果
/*example*/

///静态库 register.h
static std::map<std::string, std::string> register_map;

#define REGISTER(name, fun).  register_map.insert(#name, #fun)

std::string get_fun(std::string name) {
  auto iter != register_map.find(name);
  if (auto iter != register_map.end()) {
    return register_map[name];
  }
  return "";
}


///主程序 main.cpp
REGISTER(first, first)
REGISTER(second, second)

void main() {
  std::string fun = get_fun("first);
  return 0;
}

现象

  • 主程序运行时在get_fun时获取不到结果。
  • 打印register_map地址发现存在多个地址。

分析

  • 由于register_map存在多个地址说明存在多个对象;
  • 为啥会存在多个对象,原因可能和static有关。

原因

  • 由于在头文件中使用static,当其他文件include这个文件时会导致也会生成一份数据。

标签:std,map,name,静态,register,问题,fun,全局变量
From: https://www.cnblogs.com/xiaohaigegede/p/16904004.html

相关文章

  • 恒创科技:有关服务器虚拟化的常见问题解答
    虚拟化”一词经常使用,尤其是与服务器相关的时候。以下是一些有关服务器虚拟化常见问题的解答。什么是服务器虚拟化?虚拟化是一个经常应用于范围广泛的......
  • electron mac应用签名问题
    [unabletobuildchaintoself-signedrootforsigner](https://testerhome.com/topics/33338)[官方证书](https://www.apple.com/certificateauthority/)[签名builde......
  • 4.Ubuntu设置静态IP地址
    Ubuntu 18.04采用netplan来管理网络配置计划,在/etc/netplan/目录下有一个以yaml结尾的文件,设置步骤如下ifconfig查看电脑的网卡信息: route-n命令,打印路由表我这边......
  • helm 问题解决 —— HELM部署异常:Error: UPGRADE FAILED: another operation (install
    转载: https://blog.csdn.net/dreamer_chen/article/details/118596034  HELM部署异常:Error:UPGRADEFAILED:anotheroperation(install/upgrade/rollback)isin......
  • Tensorflow问题
    Tensorflow问题1、AnothermetricwiththesamenamealreadyexistsFile"/usr/local/python3/lib/python3.7/site-packages/keras/__init__.py",line25,in<module>......
  • 关于VS2022 报错:MSB3027 无法将"xxx.dll"复制到"xxx"超出了重试计数 10 问题分析与解
    从标题我们不难看出,这个问题实际就是系统不能够将这个dll文件那过来放到其他目录去。其实我不知道大家是一个什么思路哈,我一开始就是无脑的去网上查找解决方案,但是在网上......
  • 微信小程序中textarea与input的问题总结
    textarea与input的相爱相杀测试机器本次探索所用到的机器为安卓机器:荣耀20,小米10s;ios机器:iPhone131、绑定bindkeyboardheightchange事件问题:只为textarea绑......
  • 小程序textarea穿透问题
    问题:当有fixed元素时,无论设置多少z-index值,textarea组件都会穿透该fixed元素底部fixed浮动选择车牌组件,当车牌未点击确认,自动跳转到输入备注textareafocus解决方案:......
  • 为什么市面上几乎没有静态HTTP套餐
    我们知道,HTTP代理按时效长短,可分为动态和静态,但市面上大多数HTTP代理套餐都是动态的,很少有静态代理套餐,这是为什么呢?众所周知,大多数业务使用HTTP代理是因为请求量......
  • Python 新环境常见问题
    Troubleshootingwhenrunpythonscriptinnewenvironment 1.Error:pluggy._manager.PluginValidationError:unknownhook'pytest_html_report_title' Resuolt......