#! perl -slw
use strict; use Config;
use Inline C => Config => BUILD_NOISY => 1, CCFLAGS => $Config{ccflags}." -DDEBUG=1";
use Inline C => <<'END_C', NAME => 'ICexample', CLEAN_AFTER_BUILD =>0;
int add( int a, int b ) {
int result;
result = a + b;
return result;
}
END_C
my $a = 12345;
my $b = 23456;
my $c = add( $a, $b );
print $c;
####
int add( int a, int b ) {
int result;
result = a + b;
return result;
}
####
XS_EUPXS(XS_main_add) {
dVAR; dXSARGS;
int a = (int)SvIV(ST(0))
int b = (int)SvIV(ST(1))
int RETVAL;
dXSTARG;
RETVAL = add(a, b);
XSprePUSH;
PUSHi((IV)RETVAL);
XSRETURN(1);
}
####
XS_EXTERNAL(boot_ICexample) {
dVAR; dXSARGS;
const char* file = __FILE__;
XS_VERSION_BOOTCHECK;
newXS("main::add", XS_main_add, file);
XSRETURN_YES;
}