首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

volatile的用法解决思路

2012-03-14 
volatile的用法看网上的一些介绍,基本上都是以整型举例。如果是char数组或string型的呢,该如何用?voidmain(

volatile的用法
看网上的一些介绍,基本上都是以整型举例。
如果是char数组或string型的呢,该如何用?

void   main()
{
char   volatile   Test[100]   =   "are   you   ok? ";


//     'volatile   char   * '   :   forcing   value   to   bool   'true '   or   'false '   (performance   warning)   通过(char*)Test强制转换一下没问题,但不知不加为什么?
cout   < <   Test   < <   endl;

//     同样在赋值时也需要转换,不然下面的strcpy也同样报错
strcpy(   Test,   "how   are   you? "   );
}

如果是string或CString类型呢?
volatile   string   sBuffer   =   " ";

//     error   C2678:   binary   '= '   :   no   operator   defined   which   takes   a   left-hand   operand   of   type   'volatile   class   std::basic_string <char,struct   std::char_traits <char> ,class   std::allocator <char>   > '

谢谢!!
sBuffer   =   "good ";

[解决办法]
进一步讨论:
#include <iostream>
using namespace std;

void main()
{
volatile char Test[100] = "are you ok? ";


// 输出结果为1,自动转换为bool类型了,呵呵
cout < <Test < < endl;
}
[解决办法]
“全局变量耦合”?这可不是一个好的设计啊。让接收线程把收到的东西转发消息到主线程吧。
[解决办法]
volatile表示“易变的”,也就是说,我们的程序没有去写这个变量,这个变量的值也会改变。用volatile修饰过的变量,编译器每次都会去读取该变量,而不会去访问该变量的buffer。一般来说,volatile是用来修饰寄存器的。在Windows平台下,声明一些多线程共享的变量也会用到volatile。但是共享内存区域是一个不好的编程风格。因此volatile很少在非嵌入式程序中出现。

热点排行
Bad Request.