内联函数中使用STATIC变量会有什么问题?

wzy_2010 2010-07-13 10:06:00
内联函数中使用STATIC变量会有什么问题?
...全文
731 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
blackboycpp 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wyz007134 的回复:]
但是static的变量生存期是静态的,所以它不会被丢掉,再函数下次调用时,仍然使用上一次的值
[/Quote]

对,内联函数只不过是编译时就把代码复制到函数调用的地方,如A,B, C三个地方,
而如果在内联函数体里使用static变量,如v,则会导致A,B,C三个地方的v有关联性。
wyz007134 2010-07-14
  • 打赏
  • 举报
回复 1
[Quote=引用 12 楼 zjq2009zjq 的回复:]
引用 11 楼 yunyun1886358 的回复:
编译器应该会处理这种情况,应该是正常的。

函数内部的变量用完不是就丢弃了吗?
[/Quote]
但是static的变量生存期是静态的,所以它不会被丢掉,再函数下次调用时,仍然使用上一次的值
Defonds 2010-07-14
  • 打赏
  • 举报
回复
一样的。没啥问题
zjq2009zjq 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yunyun1886358 的回复:]
编译器应该会处理这种情况,应该是正常的。
[/Quote]
函数内部的变量用完不是就丢弃了吗?
wanfahui2005 2010-07-14
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
int foo(int a)
{
static int t = 0 ;
t = a ;
return t ;
}
int main()
{
cout<<foo(1)<<foo(2)<<foo(3)<<foo(4);
return 0;
}

为什么我这样写 结果 就和5楼的一样呢 ?
yunyun1886358 2010-07-13
  • 打赏
  • 举报
回复
编译器应该会处理这种情况,应该是正常的。
东莞某某某 2010-07-13
  • 打赏
  • 举报
回复
拿出有问题的代码来看看
sugar65 2010-07-13
  • 打赏
  • 举报
回复
5楼的代码, foo内不内联应该没区别吧, 问题出在foo本身, 带static局部变量, 又在一句里调用两次
healer_kx 2010-07-13
  • 打赏
  • 举报
回复
static的变量只是存储空间的不一样,应该不会影响inline的操作的。
skyworth98 2010-07-13
  • 打赏
  • 举报
回复
这两个情况倒还有点不一样,内联的情况,如果是单线程应该没什么问题……

[Quote=引用 6 楼 sugar65 的回复:]
后果应该很恐怖吧, 内联带静态变量的函数...再恐怖点你可以在宏函数里定义静态变量, 看看后果...
[/Quote]
sugar65 2010-07-13
  • 打赏
  • 举报
回复
后果应该很恐怖吧, 内联带静态变量的函数...再恐怖点你可以在宏函数里定义静态变量, 看看后果...
hastings 2010-07-13
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
char* foo(int a)
{
static char str[32];
sprintf(str,"%d\n",a);
return str;
}
int main()
{
cout<<foo(1)<<foo(2);
return 0;
}
hastings 2010-07-13
  • 打赏
  • 举报
回复
含有static变量的函数,就像++,--这类符号一样,
不能在一条语句中使用两次以上,否则运行结果可能会莫名其妙~~
yyyay 2010-07-13
  • 打赏
  • 举报
回复
LZ去百度一下static变量,上面有很长的解释的
希望对你有用
昵称很不好取 2010-07-13
  • 打赏
  • 举报
回复
楼主发现啥问题了?
老邓 2010-07-13
  • 打赏
  • 举报
回复
没啥问题,没啥区别。

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧