标签: compilation

当我希望简单地打印出一个值时,为什么ghc会给我一个解析错误?

我有一个haskell文件:

main = putStrLn "hello world"
let a=1
show a
Run Code Online (Sandbox Code Playgroud)

和ghc说:

main.hs:3:1:                                                                                                                            
parse error (possibly incorrect indentation or mismatched brackets) 
Run Code Online (Sandbox Code Playgroud)

parsing haskell compilation ghc

-2
推荐指数
1
解决办法
51
查看次数

我不明白借贷是如何运作的

我正在尝试编写kd-tree实现,但我一直在收到错误 cannot move out of borrowed content.

这是我的KDTree结构

pub struct KDTree {
    pub bounding_box: Aabb,
    pub axis: Option<Axis>,
    left: Option<Box<KDTree>>,
    right: Option<Box<KDTree>>,
    pub objects: Option<Vec<Box<Geometry>>>,
}
Run Code Online (Sandbox Code Playgroud)

但是,此方法会抛出该错误.

pub fn direct_samples(&self) -> Vec<u32> {
    assert!(self.objects.is_some());
    let mut direct_samples = Vec::new();
    for (i, object) in self.objects
        .expect("Expected tree to have objects")
        .iter()
        .enumerate() {
        if object.material().emittance > 0f32 {
            direct_samples.push(i as u32);
        }
    }
    if self.left.is_some() {
        direct_samples.extend(self.left.unwrap().direct_samples());
    }
    if self.right.is_some() {
        direct_samples.extend(self.right.unwrap().direct_samples());
    }
    direct_samples
}
Run Code Online (Sandbox Code Playgroud)

我明白,如果我改变参数self而不是&self,它应该工作,但是当我调用它时,它会给出错误use …

compilation rust borrow-checker

-2
推荐指数
1
解决办法
80
查看次数

如何在Object Pascal中查找字符是否是字母数字或下划线在Delphi编译器和FPC中工作?

互联网上有类似或相同的问题,但答案对我不起作用.我们开发了多平台产品,它在Delphi的编译器和FPC下编译.首先,我用过:

Uses:
  System.Character;
Run Code Online (Sandbox Code Playgroud)

Character.TCharacter.IsLetterOrDigit(..)
Run Code Online (Sandbox Code Playgroud)

,但它不能在FPC下编译,所以根据其他一些消息来源,我用过:

Uses:
  Character;
Run Code Online (Sandbox Code Playgroud)

TCharacter.IsLetterOrDigit(..)
Run Code Online (Sandbox Code Playgroud)

相反,但仍然不能在FPC下编译.

有人能找到一种代码可以在Delphi编译器和FPC上工作的方法吗?我没有FPC设置与我的项目一起工作,所以我无法弄清楚,如何修复代码在FPC中工作(我只能通过构建服务器以复杂的方式测试它)并且可以'找到方法,怎么做.

我也想用正则表达式编写它,但是同事们说,这对他们来说太复杂了.

delphi compilation freepascal alphanumeric

-2
推荐指数
1
解决办法
222
查看次数

64位机器的对齐不是8字节

我试图在我的64位机器上找到对齐方式(Intel iCore7上的Win10).我想到了这个实验:

void check_alignment(char c1, char c2 )
{
   printf("delta=%d\n", (int)&c2 - (int)&c1); // prints 4 instead of 8
}

void main(){
    check_alignment('a','b');
}
Run Code Online (Sandbox Code Playgroud)

我在期待delta=8.因为它是64位机器char c1,char c2应该存储在8的倍数.不是吗?

即使我们假设编译器已经进行了优化以将它们存储在更小的空间中,为什么不将它们背靠背存储delta=1呢?为什么4字节对齐?

我用float类型重复了上面的实验,但仍然给出了delta=4

void check_alignment(float f1, float f2 )
{
   printf("delta=%d\n", (int)&c2 - (int)&c1); // prints 4
}

void main(){
    check_alignment(1.0,1.1);
}
Run Code Online (Sandbox Code Playgroud)

c compilation cpu-architecture

-2
推荐指数
2
解决办法
61
查看次数

"int a,b;"之间的性能差异 和"int a; int b;"?

正如标题所说,它很容易被描述.

每次我可以将两个单独的语句放在一个块中时,我就会想到这个问题.特别是当我编写像NP完全问题的CPU成本问题时.

是否有必要将两个单独的陈述合并在一起?

c c++ compiler-construction compilation compiler-optimization

-2
推荐指数
1
解决办法
118
查看次数

参数不得初始化

是否可以向函数参数添加编译器级约束,它们必须尚未初始化,例如,以下情况可以正常:

void f(SomeClass& a) { /* ... */ }

int main() {
    f(new SomeClass());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

虽然以下内容不合适:(因为a已初始化并存储在变量中)

int main() {
    SomeClass a;
    f(a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ compilation

-2
推荐指数
1
解决办法
72
查看次数

为什么即使在Ocaml中实现了第一个Rust编译器,Rust的性能还是比Ocaml快

我发现最初的Rust语言编译器是用Ocaml编写的。所以我以为Rust将与Ocaml的性能类似。但是当我查看基准Ocaml与C ++以及Rust与C ++并将Ocaml与Rust进行比较时。它给了我什么...?,但是怎么...?

即使Rust源自Ocaml,如何将Rust的性能比Ocaml更快?

然后它引起了另一个问题?

从C派生的基于编译器的语言是否可以比C本身的性能更快?

c++ compiler-construction performance compilation rust

-2
推荐指数
1
解决办法
464
查看次数

是否可以将C文件编译为.app而不是.exe文件?

如果没有办法将您的C文件转换为.app macintosh可执行文件,那么您如何创建任何mac应用程序?

更新:这是因为我没有安装GCC.

c macos exe compilation

-3
推荐指数
1
解决办法
1211
查看次数

在linux上等效的蝙蝠

我有一个.bat文件,我用它在我的窗口创建.apk文件...现在我需要能够在ubuntu中创建.apk文件,但我不知道如何将我的bat文件转换为批处理文件能够在ubuntu上运行它!

下面是在Windows上工作正常的bat文件...请你给我一些关于如何在ubuntu上运行它的提示?

@echo off
set PAUSE_ERRORS=0
:user_configuration

:: Path to Flex SDK 
set FLEX_SDK=C:\sdk\flex_sdk_4.5.1.21328

:: Path to Android SDK
set ANDROID_SDK=C:\sdk\android

:validation
if not exist "%FLEX_SDK%\bin" goto flexsdk
if not exist "%ANDROID_SDK%\platform-tools" goto androidsdk
goto succeed

:validation
if not exist "%FLEX_SDK%\bin" goto flexsdk
if not exist "%ANDROID_SDK%\platform-tools" goto androidsdk
goto succeed

:flexsdk
echo.
echo ERROR: incorrect path to Flex SDK
echo.
if %PAUSE_ERRORS%==1 pause
exit

:androidsdk
echo.
echo ERROR: incorrect path to Android SDK in 'bat\SetupSDK.bat'
echo.

if %PAUSE_ERRORS%==1 pause …
Run Code Online (Sandbox Code Playgroud)

android compilation batch-file apk

-3
推荐指数
1
解决办法
397
查看次数

如何编译此代码并打印结果?

以下java代码不会运行,我想通过编译这段代码来了解结果!

    class ParseInt{
        static void main(String [] a){
            int b=Integer.parseInt(a[0]);
            int m = Integer.MIN_VALUE;
            for (int i=0; i<32; i++){
                System.out.print(( b & m >>> i )== 0 ? "0" : "X");
                //System.out.print(((b &(m >>> i))== 0)? "0" : "X");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

java compilation

-3
推荐指数
1
解决办法
50
查看次数