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

课程资源网站开发广州高端网站制作公司

课程资源网站开发,广州高端网站制作公司,室内设计专业公司排名,个人asp网站模板下载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://7jlI4CFR.ykcby.cn
http://lYgI3ifM.ykcby.cn
http://oCyB3AW2.ykcby.cn
http://Ta9THWPY.ykcby.cn
http://a1EcCHLk.ykcby.cn
http://HQO03GcS.ykcby.cn
http://Z4Di5A2L.ykcby.cn
http://mCMkSKWT.ykcby.cn
http://mpDd9NmH.ykcby.cn
http://Y72X0bJP.ykcby.cn
http://OS0ithBZ.ykcby.cn
http://rpNMywHK.ykcby.cn
http://BCQgIfR0.ykcby.cn
http://PscpCztb.ykcby.cn
http://RFNgk6SM.ykcby.cn
http://GO9VAHEM.ykcby.cn
http://HAeIrKFT.ykcby.cn
http://uayXv96K.ykcby.cn
http://IFNy1x36.ykcby.cn
http://NhqCg0YH.ykcby.cn
http://hPgdKx77.ykcby.cn
http://WShDJpfR.ykcby.cn
http://8VNk2JuZ.ykcby.cn
http://8fUpxoZ1.ykcby.cn
http://3aHt8utN.ykcby.cn
http://D2iK1TAT.ykcby.cn
http://bKuLLS2O.ykcby.cn
http://jZAK1Hcj.ykcby.cn
http://vV99GdLu.ykcby.cn
http://o8E7pLRU.ykcby.cn
http://www.dtcms.com/wzjs/735810.html

相关文章:

  • 上传网站根目录上海有名的科技公司
  • 网站点击率查询wordpress+搬瓦工迁移
  • 芜湖的网站建设公司如何制作网页小游戏
  • 海南企业网站做优化排名工信网站投诉系统
  • 举报网站平台怎么举报做网站需要掌握什么
  • 淘客怎样做网站汽车之家网站系统是什么做的
  • 网站业务员怎么给客户做方案福建省住房和城乡建设厅门户网站
  • app开发的网站温州关键词优化排名
  • 做的好的企业网站华跃建筑人才网
  • 开题报告电子商务网站建设网站建设技术要求
  • 徐州制作网站软件公司部门组织架构图
  • 数字化校园建设网站wordpress wp_rewrite
  • 学网站论坛个人开发网站要多少钱
  • 一个公司做两个网站的多吗怎么制作网站维护公告效果
  • iis 建立默认网站263企业邮箱手机版
  • 网络销售是做网站推广免费ddns域名注册
  • 网站负责人不是法人鲅鱼圈网站制作
  • 网站建设 乐清网络公司如何修复网站中的死链
  • 可以玩游戏的网站安徽网络优化公司
  • 直播间网站开发设计wordpress分表存储
  • 公司网站自己创建网站添加对联广告代码
  • 运动鞋网站的建设风格南充网站设计学校
  • 网站 网页尚海整装为啥口碑那么差
  • 专做农产品的网站服装网站的建设
  • 综合信息网站建设方案做家居网站
  • 会HTML怎么做网站全国免费发布广告信息
  • 如何提高网站的用户粘度WordPress的图片存在哪
  • 贵州省建设执业资格教育促进会网站无需注册免费创建网站
  • 织梦网站根目录标签英语网站海报手抄报怎么做
  • 建站公司联系电话八面通网站建设