再谈全局数组的外引用
来源:互联网 发布:js半圆形仪表盘代码 编辑:程序博客网 时间:2024/05/16 13:49
test.cpp文件内容如下:
char g_szTest[100] = "original";
现在, 我要在main.cpp中引用这个数组怎么办呢? 肯定不能把char g_szTest[100] = "original";放到test.h文件中, 然后用main.cpp来包含test.h啊, 这样容易形成编译碰撞, 也是应该禁止的。 那怎么办? 其实, 我们可以在main.cpp中这样搞:
#include <iostream>using namespace std;extern char g_szTest[];int main(){cout << g_szTest << endl;return 0;}这样就有结果了。
现在的问题是, 如果要在main.cpp中修改g_szTest数组, 那该怎么办呢? 看看如下代码:
#include <iostream>using namespace std;extern char g_szTest[];int main(){cout << g_szTest << endl;int size = sizeof(g_szTest); // errorstrncpy(g_szTest, "hello world", size - 1);g_szTest[size - 1] = '\0';return 0;}原来, 在main.cpp中, 无法直接获取到g_szTest的size啊, 那怎么办呢? 凉拌, 不要在main.cpp中直接改变g_szTest中的串, 而是由test.cpp来直接提供改变g_szTest中串的接口, 这样才合理啊, 如下:
test.cpp中的内容为:
#include <iostream>char g_szTest[100] = "original";void setValue(const char *pValue){// 空指针, 我就不判断了, 程序住主要用作示意int size = sizeof(g_szTest);strncpy(g_szTest, pValue, size - 1);g_szTest[size - 1] = '\0';}test.h中的内容为:
void setValue(const char *pValue);main.cpp中的内容为:
#include "test.h"#include <iostream>using namespace std;extern char g_szTest[];int main(){cout << g_szTest << endl; // originalsetValue("good");cout << g_szTest << endl; // goodreturn 0;}
好了, main.cpp要想修改test.cpp中的变量, 那还是通过test.cpp对外提供的接口来修改吧, 模块间的消息通知不经常就是通过调用来实现么?
0 0
- 再谈全局数组的外引用
- 静态变量static和extern外引用
- 关于全局数组的初始化
- 全局数组
- PHP预定义的超全局数组
- Application创建全局数组
- 全局函数&数组
- php超全局数组
- 三:数组_PHP全局数组
- 全局和局部数组引发的小血案
- php中预定义的超全局数组变量
- 优酷,sina ,土豆网 视频的站外引用超酷代码(去AD,可全屏,点击暂停不弹出)
- C 全局数组和局部数组(堆栈数组) 的初始化不同
- 数组的指针控制以及超全局数组的定义和意义
- 全局数组变量和局部数组变量的访问越界问题
- BCB 全局控件数组初始化
- 038.Global Array 全局数组
- 038.Global Array 全局数组
- SQLSERVER 锁粒度和层次结构
- 阅读程序写出运行结果8
- 网络编程(自定义缓存图片)
- SQLSERVER锁模式
- JAVA菜鸟入门篇 - 封装/隐藏、java访问控制符 (十七)
- 再谈全局数组的外引用
- 网页简易版计算器
- 阅读程序写出运行结果9
- hdu 2022 海选女主角
- C# 编写9*9乘法表!
- windbg kp kb 命令测试
- 阅读程序写出运行结果10
- STL 优先队列、队列、栈的使用
- 大概多少换个地方华国锋好好看看