在我的串行COM类
options.c_cflag |= (CLOCAL | CREAD | CS8);
如何使此串行配置代码可配置?
我要让|= (CLOCAL | CREAD | CS8)
编辑,如我将在从一个文本文件中这部分读取和“追加”到options.c_cflag
。
我尝试使用string
变量,但无法使其工作。 任何人都知道我该怎么做?
在我的串行COM类
options.c_cflag |= (CLOCAL | CREAD | CS8);
如何使此串行配置代码可配置?
我要让|= (CLOCAL | CREAD | CS8)
编辑,如我将在从一个文本文件中这部分读取和“追加”到options.c_cflag
。
我尝试使用string
变量,但无法使其工作。 任何人都知道我该怎么做?
你必须编写代码来实现这个目标,因为基本上你试图在运行时编译C代码。你可以使用正则表达式引擎或简单的字符串拆分来提取每个组件,然后将它们从字符串转换为符号(使用表或类似的东西:if(!strcmp(text,“CLOCAL”))v = CLOCAL; )。
OR'd标志为您提供了一个实际的数值,可以通过stringstream
将其读取并转换为该值。
template<typename T>
T flagValue(const std::string& flag_str)
{
T value;
std::stringstream ss;
ss << hex << flag_str;
ss >> value;
return value;
}
,但你需要知道的逻辑与的标志的精确值,它写的地方,并与flagValue的结果分配options.c_flag
。
例如flagValue<unsigned int>("1a")
。