我正在尝试使用shell中的命令在Linux中编译c ++程序
$ g++ -Wall *.cpp -o prog
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它继续给我一个奇怪的错误:
g ++:内部错误:总线错误(程序cc1plus)请提交完整的错误报告.请参阅说明.
我在网上搜索了这个总线错误,它说这与访问非法内存有关.
有人可以为我澄清一些事情吗?
这是我的代码:
//main.c
int main()
{
int i=0;
for (i = 0; i < 10; i++)
{
//do nothing
}
int temp = 0;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
代码可以用我的clang(602.0.49)编译,但error C2143在VS 2012中生成:
错误C2143:语法错误:缺少';' 在'类型'之前
将后缀修改为.cpp或删除后,一切都很好int temp = 0;
这是否意味着我无法for在C项目中循环后声明变量?
old_mat = [1,2,3; 4,5,6];
new_mat = old_mat'(2:end, :);
new_mat = (old_mat')(2:end, :);
Run Code Online (Sandbox Code Playgroud)
我想转置并提取一个矩阵但我没有尝试这些尝试.
是否可以排成一行?
Point并Vec2使用相同的变量和完全相同的构造函数定义:
pub struct Point {
pub x: f32,
pub y: f32,
}
pub struct Vec2 {
pub x: f32,
pub y: f32,
}
impl Point {
pub fn new(x: f32, y: f32) -> Self {
Self { x, y }
}
}
impl Vec2 {
pub fn new(x: f32, y: f32) -> Self {
Self { x, y }
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以定义一个特征来实现构造函数?
到目前为止,我发现只能定义接口,因为内部变量未知:
pub trait TwoDimensional {
fn new(x: f32, y: f32) -> Self;
}
Run Code Online (Sandbox Code Playgroud) 我希望定义一个可FIBONACCI_SEQUENCE全局访问的常量数组(在本例中),其项目可以使用 const 函数(fib()在本例中)进行计算。
初始化数组时,我必须手动输入[fib(0), fib(1), fib(2)...]直到最后一个。有没有一种简单的方法可以用类似的东西初始化它[fib(i) for i in 0..200]?
斐波那契数列只是这里的一个示例,实际的用户情况要复杂得多。
pub const fn fib(n: i32) -> i32 {
if n <= 1 {
return n;
}
return fib(n-1) + fib(n-2);
}
const FIBONACCI_SEQUENCE: [i32; 3] = [fib(0), fib(1), fib(2)];
fn main() {}
Run Code Online (Sandbox Code Playgroud) 我可以为一个结构添加别名,如下所示:
struct DummyStruct {}
use DummyStruct as MyStruct;
Run Code Online (Sandbox Code Playgroud)
但是当涉及到模板化结构时:
struct TemplatedStruct<T> {
v: T
}
use TemplatedStruct::<i32> as AnotherStruct;
Run Code Online (Sandbox Code Playgroud)
我收到错误:
8 | use TemplatedStruct::<i32> as AnotherStruct;
| ^ expected identifier
Run Code Online (Sandbox Code Playgroud)
如何修复它以给模板化结构起别名?