2011-09-16 35 views
5
#include<iostream> 
#include<cstdlib> 
#include<cstring> 
#include<cstdio> 
using namespace std; 

class Book{ 
    public: 
     int a; 
     int b; 
}; 

int main() 
{ 
    Book b1; 
    b1.a = 10; 
    b1.b = 20; 
    cout<< b1.a << " " <<b1.b; 
} 

khi chúng tôi biên dịch mã trên vớithực thi được tạo ra với kêu vang ++ đi điên

clang++ test.cc -o a.exe 

và chạy a.exe hoạt động hoàn hảo. Nhưng khi chúng tôi biên dịch chương trình tương tự với

clang++ test.cc -emit-llvm -S -o a.exe 

và bây giờ khi chúng ta chạy nó, chương trình đi điên bằng cách tung ra ntvdm.exe (có thể được nhìn thấy trong quá trình thám hiểm) và command prompt bắt đầu cư xử lạ.

phần mềm stack:

clang version 2.9 (tags/RELEASE_29/final) 
Target: i386-pc-mingw32 
Thread model: posix 
+0

trông hoàn toàn ổn. –

+0

Bạn quên truyền '-Wall' sang' clang ++ ' –

Trả lời

9

Bằng cách thêm '-S -emit-llvm' bạn không tạo ra mã máy, nhưng LLVM bytecode. Để thực hiện điều đó, bạn cần sử dụng lli.

ntvdm.exe là máy ảo để chạy các chương trình DOS ở chế độ thực, có nghĩa là các cửa sổ sẽ diễn giải trong LLVM bytecode dưới dạng chương trình DOS 16 bit và cố gắng chạy nó như một.

+0

Tuyệt vời Tôi hiểu sai lầm .. Cảm ơn .... –

Các vấn đề liên quan