From: Philip Rhoades Date: 2008-06-06T08:15:40+09:00 Subject: RubyToC - Second Question People, truby2c.rb: #!/usr/bin/ruby require 'rubygems' require 'ruby_to_ansi_c' class MyTest def arr_iterate tstarr = [ 'this is the first line', 'this is the second line', 'last line' ] tstarr.each { |line| puts line } end def main arr_iterate return 0 end end result = RubyToAnsiC.translate_all_of MyTest puts result gives C output: void arr_iterate(); long main(); void arr_iterate() { str * tstarr; tstarr = (str) malloc(sizeof(str) * 3); tstarr[0] = "this is the first line"; tstarr[1] = "this is the second line"; tstarr[2] = "last line"; unsigned long index_line; for (index_line = 0; tstarr[index_line] != NULL; ++index_line) { str line = tstarr[index_line]; puts(line); } } long main() { arr_iterate(); return 0; } compiling with gcc gives: truby2c.c: In function 'arr_iterate': truby2c.c:9: error: 'str' undeclared (first use in this function) truby2c.c:9: error: (Each undeclared identifier is reported only once truby2c.c:9: error: for each function it appears in.) truby2c.c:9: error: 'tstarr' undeclared (first use in this function) truby2c.c:10: error: expected ';' before 'malloc' truby2c.c:16: error: expected ';' before 'line' truby2c.c:17: error: 'line' undeclared (first use in this function) truby2c.c: In function 'main': truby2c.c:22: warning: return type of 'main' is not 'int' - seems like some fundamental problems with such a little program? Thanks, Phil. -- Philip Rhoades Pricom Pty Limited (ACN 003 252 275 ABN 91 003 252 275) GPO Box 3411 Sydney NSW 2001 Australia E-mail: phil@pricom.com.au