我最近开始使用 CLang 来编译嵌入式 C++ ARM 程序。
在此之前,我使用 GCC 和 C,几乎专门用于嵌入式工作。
我注意到当我有一个返回值的方法时,我忘记了 return 语句,程序核心转储。除了来自我的设备驱动程序之一的“msleep error -1”之外,没有打印任何错误。这是在 FreeBSD 上。
我希望忘记 return 语句只会导致函数返回垃圾,而不是核心转储。
编辑:我要返回一个布尔值,而不是指针或对象或任何复杂的东西。即使返回值无关紧要,程序也会崩溃。
到底是怎么回事?
例如:
bool MyClass::DummyFunc() {
<do some stuff and forget the return value>
}
Run Code Online (Sandbox Code Playgroud)
别处:
if(pMyObj->DummyFunc()) {
print ("Hey, it's true!\n");
} else {
print ("Darn, it's false!\n");
}
Run Code Online (Sandbox Code Playgroud)
无论返回值如何,该代码都不应崩溃。
有没有相关的问题
vector< vector<int> > v(m, vector<int>(n));
Run Code Online (Sandbox Code Playgroud)
写得更安全:
vector< vector<int> > v(m);
for (size_t i=0; i<m; i++)
v[i].resize(n);
Run Code Online (Sandbox Code Playgroud) 我是C++编程的初学者我有一个文本文件,其中有100万个素数用空格分隔.我想把它们放在一个int数组primes []中.以下是我写的代码:
int main()
{
ifstream infile;
infile.open("C:/Users/DELL/Desktop/primes1.txt");
//check for error
if(infile.fail()){cerr<<"Error Opening File"<<endl;
exit(1);}
int i=0;
primes = new int[1000001];
while(i != infile.eof()){
infile>>primes[i];
i++;
}
cout<< primes[4] <<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我构建并运行时,它会出现以下错误:
"错误:'primes'未在此范围内声明"
这是什么解决方案?
这是我们的一次考试中提出的问题.解释以下代码的输出......
#include <stdio.h>
int main(void)
{
int i = 320;
char *ptr = (char *)&i;
printf("%d", *ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)