您的位置:首页 > 编程语言 > Ruby

ruby中如何直接编译运行C代码

2014-11-30 20:46 260 查看
我们知道ruby通过C EXT可以很方便的运行C代码,其实只要是C接口的语言都可以,比如汇编语言也可以哦。但是一些简单的函数难道还得费劲用C扩展的方式吗?其实ruby gem里有RubyInline包,通过它可以在ruby源代码里写C代码,然后调用执行啊!

直接用 gem install RubyInline 安装吧!我们测试一下:

require 'inline'

class A
inline do |b|
b.include '<stdio.h>'
b.flags=["-std=c99"]
b.c "
int show(int i,int j)
{
return i+j;
}"

b.c "int main(void)
{
puts(\"hello world!\");
return 0;
}"

b.c 'void fast_inc(long x)
{
long long v = 0;
for(long i=0;i<x;++i)
for(long j=0;j<x;++j)
for(long k=0;k<x;++k)
v += i+j*k;
//printf("now is %ld , %ld , %ld\n",i,j,k);
printf("v is %lld\n",v);
}'
end
end

a = A.new
puts a.show(1,2)
a.main()
a.fast_inc(90000000000000)


可以看到ruby中很方便的调用C中的函数,因为后面用了C99的语法,所以要在flags中设置C99选项.注意flags是以数组而不是字符串来赋值的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: