1月1日より 4月1日ネタな気もしますが、、、
色々ややこしいコードをスクリプト言語で生成して、それを C や C++ の中
に埋めこんでおきたい、という時は、PHP とか使う方法もありえるかもしれま
せんが Ruby だとそれ向けの ERB というものがあります。大変邪道な例です
が、1つの関数記述に、「型」を渡すことでテンプレートっぽいことを可能に
したのが以下の例です。
#include <stdio.h>
<%
def add_func(type)
a=<<EOF
#{type} add_#{type}(#{type} a, #{type} b)
{
return a+b;
}
EOF
a
end
%>
<%=add_func("int")%>
<%=add_func("double")%>
int main()
{
printf("%d %e\n", add_int(1,2), add_double(1.0,2.0));
}
これを以下のスクリプト
#!/usr/bin/ruby
# process_erb_standalone.rb
#
# process erb in evhd files
# Time-stamp: <2018-01-01 16:28:52 makino>
#
# Copyright Jun Makino All rights reserved.
require "erb"
print ERB.new(gets(nil)).result
で処理した結果は
#include <stdio.h>
int add_int(int a, int b)
{
return a+b;
}
double add_double(double a, double b)
{
return a+b;
}
int main()
{
printf("%d %e\n", add_int(1,2), add_double(1.0,2.0));
}
のようになります。まあその、できます、というだけです。全くお勧めはしません。