C语言不定长参数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 09:58:11
情况是这样的,一个while循环(最多的情况15个左右),循环中,要不停的输出log信息。log信息的处理,类似于printf函数。
由于log信息是写到pci卡中的,因此,处理log信息时间较长。造成整个while循环执行的时间有点长。

希望能改进的是:执行while循环的时候,将所有log信息,保存起来;退出while循环之后,输出到PCI卡。
这就需要对不定长的参数进行处理,目前的处理是根据,log格式,将参数解析出来。

有没有一种方式,不对log信息进行处理;仅仅是将所有参数取出来,保存到数组中,最后一起处理。
我没有说清楚
while循环内部,会调用很多别的函数。log的格式,不一样。log输出,必须得用不定长参数。
while循环内部,将log信息,保存到数组或者链表中的方法,我尝试过。
问题在于:如何,保存每一条log信息的实参的值。(参数,不是定长)

说的有点混乱,提供几个方法。1,你的WHILE另开一个线程.2做一个LIST保存每个LOG的信息,每个信息是NEW出来的。

说实话,我还是没明白你补充的意思。
我写个伪代码吧,希望能有点启发
list <LOG_INFO*> info_list;
while ()
{
...//some function
//new出来的东西在堆上,不会被释放掉,所以一直都存在
LOG_INFO* log_info = new LOG_INFO();
//放到炼表里保存指针
info_list.push_back(log_info);
...//some function
}
output_log(info_list);//把炼表给输出的函数
release_info(info_list);//释放new的东西。

基本是这个意思,就是你new出来的东西不会被释放.
另外log_info可以是一个类,里面变的东西都可以设置,当然有的东西没有可以不设置.因为具体问题不清楚,所以可能更优化.

而输出的时候是根据类里面的成员变量进行输出的.

举例:
比如可能输出的是字符串也可能输出图片那么可以定义如下
class Info
{
string str;
Image image;
bool is_str;
bool is_image;
}
然后判断到底有什么,当然也可以用指针等其他方法进行数据结构的优化.

log格式不一样,是指类型不一样吗?

是指log可能是不同的结构类型的?

不定长参数是指参数数量不同? 这个参数是输出到Pci的函数要用的参数?

你现在的描述,仍然很模糊,不妨给个例子说明一下。描述一下log可能的格式,输出到Pci函数等。