您的位置 首页 java

在Ruby语言中直接执行C代码可能吗?

我们知道 ruby 通过C EXT(C扩展)可以很方便的运行C代码,其实只要是C接口的语言都可以,比如 汇编语言 也可以。

但是一些比较简单的C代码难道还得费劲用C扩展的方式吗?其实ruby gem里有Ruby inline 包,通过它可以在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中的函数,超级简单,脑子就不停在C和ruby之间切换吧 😉

因为上面代码里使用了了C99的语法,所以要在flags中设置C99选项.

注意flags是以数组而不是字符串来赋值的!

ruby中调用C随心所欲,你值得拥有!

文章来源:智云一二三科技

文章标题:在Ruby语言中直接执行C代码可能吗?

文章地址:https://www.zhihuclub.com/183578.shtml

关于作者: 智云科技

热门文章

网站地图