gpt4 book ai didi

c++ - 返回真还是返回假?魔法

转载 作者:太空狗 更新时间:2023-10-29 23:15:12 26 4
gpt4 key购买 nike

我的 C++ 程序在从 VoIP 数据包中提取音频时遇到问题。

它在 Linux 和 OpenBSD 上的 amd64 和 x86 上运行良好,但是当我在 ARM 上的 OpenBSD 上运行程序时,它确实有神奇的作用。

我在 LoadConfigFile 中调用 return true,在 ProcessConfiguration 中返回结果为 false。

谁能帮帮我?也许我真的只是瞎子。我用代码做了很多测试打印。

这是调用函数 ProcessConfiguration 的程序的主要功能。

int main ( int argc, char **argv ) {

if ( ! config.ProcessConfiguration( argc, argv ) ) {
std::cout << "process configuration failed" << std::endl;
std::cout << "exiting whole program with EXIT_FAILURE" << std::endl;
return EXIT_FAILURE;
}

std::cout << "process configuration is true" << std::endl;

// User want to only print configuration
if ( config.m_printconfig == true ) {
config.PrintConfig();
return EXIT_SUCCESS;
}
.
. // Long uninteresting code
.
return EXIT_SUCCESS;
}

这是调用 LoadConfigFile 的函数 ProcessConfoguration。

bool TConfig::ProcessConfiguration ( int & argc, char ** & argv ) {

// Scan options from command line
int c;
while (( c = getopt ( argc, argv, "c:dhn" )) != EOF ) {
switch (c) {
case 'c':
m_configfile = optarg;
break;
case 'd':
m_daemon = false;
break;
case 'h':
m_printusage = true;
return true;
case 'n':
m_printconfig = true;
break;
default:
return false;
}
}
argc -= optind;
argv += optind;

if ( LoadConfigFile() == false ) {
std::cout << "LoadConfigFile was false" << std::endl;
return false;
}
std::cout << "LoadConfigFile was true" << std::endl;
return true;
}

并且此函数加载配置文件并解析所有指令。

bool TConfig::LoadConfigFile ( void ) {

std::string line;
std::string directive;
std::ifstream data;

if ( m_configfile.empty() ) {
m_configfile = DEFAULT_CONFIGFILE;
}

std::cout << "opening file " << m_configfile << std::endl;

data.open( m_configfile.c_str() );

if ( ! data.is_open() ) {
std::cerr << "Couldn't open config " << m_configfile << std::endl;
return false;
}
std::cout << "configfile is open" << std::endl;
std::cout << "before getline" << std::endl;
while ( getline( data, line ) ) {
std::cout << "after getline" << std::endl;
trim_whitespaces( line );
.
. // Long uninteresting code
.
}
std::cout << "before data.close" << std::endl;
data.close();
std::cout << "before return true in LoadConfigFile" << std::endl;
return true;
}

这是在终端上的输出。

$ ./call-extract -c call-extract.conf -d -n 
opening file call-extract.conf
configfile is open
before getline
before data.close
before return true in LoadConfigFile
LoadConfigFile was false
process configuration failed
exiting whole program with EXIT_FAILURE
$ echo $?
1
$

我在 LoadConfigFile 中调用 return true,在 ProcessConfiguration 中返回结果为 false。

最佳答案

返回的是真。

我的输出:

before return true in LoadConfigFile
LoadConfigFile was true

没有无趣部分的代码:

struct TConfig
{
bool ProcessConfiguration()
{
bool rv = true;
if( !LoadConfigFile() ) { rv = false; }
printf("LoadConfigFile was %s\n", rv?"true":"false" );
return rv;
}

bool LoadConfigFile ( void )
{
printf("before return true in LoadConfigFile\n");
return true;
}
};
void fv()
{
TConfig config; config.ProcessConfiguration();
}

关于c++ - 返回真还是返回假?魔法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30272858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com