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

长沙网站快速排名提升wordpress rpc 评论

长沙网站快速排名提升,wordpress rpc 评论,百度知道app,wordpress和dedecms哪个好C中extern关键字的完整用法总结 extern是C中管理链接性(linkage)的重要关键字,主要用于声明外部定义的变量或函数。以下是详细的用法分类和完整示例: 一、基本用法 1. 声明外部全局变量 // globals.cpp int g_globalVar 42; …

C++中extern关键字的完整用法总结

extern是C++中管理链接性(linkage)的重要关键字,主要用于声明外部定义的变量或函数。以下是详细的用法分类和完整示例:

一、基本用法

1. 声明外部全局变量

// globals.cpp
int g_globalVar = 42;  // 实际定义// other.cpp
extern int g_globalVar;  // 声明使用外部变量void foo() {std::cout << g_globalVar;  // 访问globals.cpp中定义的变量
}

2. 声明外部函数

// utils.cpp
void utilityFunction() { /*...*/ }// main.cpp
extern void utilityFunction();  // 声明外部函数(extern可省略)int main() {utilityFunction();
}

二、规范的头文件用法

1. 共享全局变量(推荐方案)

// config.h
#pragma once
extern int g_configValue;  // 只放声明// config.cpp
#include "config.h"
int g_configValue = 100;  // 实际定义// user.cpp
#include "config.h"  // 包含声明void useConfig() {g_configValue = 200;  // 修改共享变量
}

2. 共享常量

// constants.h
#pragma once
extern const double PI;  // 声明// constants.cpp
#include "constants.h"
const double PI = 3.1415926;  // 定义// geometry.cpp
#include "constants.h"double circleArea(double r) {return PI * r * r;  // 使用常量
}

三、C/C++混合编程

1. 包含C头文件

// c_wrapper.h
#pragma once
#ifdef __cplusplus
extern "C" {
#endifvoid legacy_c_function(int param);#ifdef __cplusplus
}
#endif// user.cpp
#include "c_wrapper.h"void modern_cpp_function() {legacy_c_function(42);  // 调用C函数
}

2. 导出C++函数给C使用

// mylib.h
#ifdef __cplusplus
extern "C" {
#endifvoid exportedFunction();#ifdef __cplusplus
}
#endif// mylib.cpp
#include "mylib.h"
void exportedFunction() {  // 用C链接方式导出// C++实现
}

四、模板显式实例化(C++11+)

// templates.h
#pragma once
template<typename T>
class DataHolder {// 模板定义
};// templates.cpp
#include "templates.h"
template class DataHolder<int>;  // 显式实例化// user.cpp
#include "templates.h"
extern template class DataHolder<int>;  // 声明使用外部实例化void foo() {DataHolder<int> holder;  // 使用预实例化的模板
}

五、特殊用法

1. 跨文件共享数组

// data.h
#pragma once
extern const char* const ERROR_MESSAGES[];// data.cpp
#include "data.h"
const char* const ERROR_MESSAGES[] = {"Success","Invalid input","Out of memory"
};// logger.cpp
#include "data.h"void logError(int code) {std::cerr << ERROR_MESSAGES[code];
}

2. 条件性外部声明

// shared.h
#pragma once
#ifdef USE_EXTERNAL_CONFIG
extern int g_config;
#else
int g_config = 0;
#endif// config_provider.cpp
#define USE_EXTERNAL_CONFIG
#include "shared.h"
int g_config = 42;  // 实际定义// config_user.cpp
#include "shared.h"  // 自动获取extern声明

最佳实践建议

  1. 变量定义与声明分离

    • 定义放在.cpp文件
    • 声明放在.h文件(用extern)
  2. 命名规范

    • 全局变量加前缀(如g_)
    • 常量使用全大写
  3. 避免污染全局命名空间

    // 更好的方式
    namespace Project {extern int g_sharedVar;
    }
    
  4. C++17后替代方案

    // 现代C++方案(替代extern全局变量)
    inline auto& getGlobal() {static int value = 42;return value;
    }
    

这些示例展示了extern在不同场景下的规范用法。正确使用extern可以有效地组织多文件项目,实现代码的模块化和跨文件共享。


文章转载自:

http://omZzDROL.jntcr.cn
http://IQ1xQm2S.jntcr.cn
http://0GouObD7.jntcr.cn
http://dOl5RvIB.jntcr.cn
http://tZldo3Vq.jntcr.cn
http://3D9nzbEE.jntcr.cn
http://gmZM8zBk.jntcr.cn
http://Zk8gwpgR.jntcr.cn
http://gk3BTd1D.jntcr.cn
http://O9saN0b0.jntcr.cn
http://Pr1XyWr6.jntcr.cn
http://aRw3fPxp.jntcr.cn
http://rFoBztZ2.jntcr.cn
http://jN9CNyKA.jntcr.cn
http://Kcpz7hyr.jntcr.cn
http://HcmYasz3.jntcr.cn
http://cYJ3YGfB.jntcr.cn
http://2Jo8351b.jntcr.cn
http://b0QJUZqB.jntcr.cn
http://MqvV9d2g.jntcr.cn
http://F61WKTFd.jntcr.cn
http://FYHtZ0O7.jntcr.cn
http://9uCmoUU2.jntcr.cn
http://yJgxF10P.jntcr.cn
http://zTSLqRcv.jntcr.cn
http://Iyy9hAnI.jntcr.cn
http://7dgHQZHh.jntcr.cn
http://WAR2nU1z.jntcr.cn
http://CAJeWZIt.jntcr.cn
http://gGX5lTen.jntcr.cn
http://www.dtcms.com/wzjs/721879.html

相关文章:

  • 东台做网站wordpress提示窗
  • app 排名网站浦东新区消息今天
  • 沈阳整站优化网站登陆系统怎么做
  • 网站效果如何制作百度网站地图
  • 网站后台管理程序下载网站搭建项目描述
  • 重庆模板建站软件是计算机网页制作工具
  • 建设网站 托管 费用网站接入变更
  • 企业产品网站源码wordpress最新文章id
  • 设计风格网站泰安网站建设报价
  • 无锡网站制作.30个无加盟费的项目
  • 温州人才网站开发深圳有哪些外贸公司
  • 关于建设旅游网站的书籍企业信用网查询系统
  • 做国外网站什么好中国建筑官网一测
  • 苏州做网站便宜的公司哪家好北京软件开发公司排
  • php的网站数据库如何上传wordpress记录点击数
  • 想做网站建设直接点击链接就能玩的小游戏
  • 山东人才招聘网seo模拟点击算法
  • 哪些招聘网站做海外招聘网站整站程序
  • 邢台做移动网站多少钱凡科建设的网站如何
  • 国外h5制作网站温州十大网络公司排名
  • 简单网站制作教程小工具文本wordpress
  • 制作网站需要什么知识王也夫
  • 河南省建设厅注册中心网站首页做茶叶网站的目的和规划
  • 网站开发公司怎么选择爱客是什么牌子档次
  • 博罗做网站公司网址你懂我意思正能量不用下载
  • 网上自学平台郑州哪里培训网站建设优化好一点
  • 手机网站快速建设wordpress怎么社交分享
  • 电子商务网站开发目的和意义ueditor如何上传wordpress
  • 湖北联兴建设有限公司网站手机网站预约表单
  • 南京城市规划建设展览馆网站数字化平台建设