내가 구현 한 루비 C 확장 (즉 루비 스크립트에서 호출하기 C 함수를) 다음은 cFuncton를 호출 루비 스크립트의 코드에 따라 파일 "cImplementation.c"va_list를 사용하여 오류를 해결하는 방법은 무엇입니까?
#include<stdio.h>
static VALUE cFunction(VALUE self, VALUE exp, const char* fmt, ...)
{
//1st Trial to get expected output
char buff[256];
va_list args;
va_start(args, fmt);
if(vsnprintf(buf, sizeof(buff), fmt, args) > 0)
fputs(buff, stderr);
va_end(args);
// 2nd Trial to get expected output
va_list args;
char buf[1024];
va_start(args,fmt);
vsnprintf(buf, 1024, fmt, args);
printf("String :: %s", buf);
va_end(args);
return Qnil;
}
void Init_MyRuby()
{
VALUE MRuby = rb_define_module("MyRuby");
rb_define_singleton_method(MRuby, "cFunction", cFunction, 1);
}
에서 C로 구현 된 가변 인수 기능입니다 아래 pssing printf의 형식의 문자열로() 메소드 :
require 'cFile'
MyRuby::cFunction(expObject, "My Message:: %s, My Value:: %d", "Hi Im here", 100)
위의 시험 1 차와 우리는 시험 2로 우리가 emplty 문자열다면 어떤 아웃 넣어 얻을니까. 그래서 위의 문제를 해결하고 예상되는 출력을 아래의 방법으로 얻을 수있는 방법을 제안 할 수 있습니다. 내 메시지 :: 안녕하세요, Im Here, 나의 의견 :: 100. 감사합니다.
왜'C++'태그 :
아마 여기에 예를 들어 다음과 같은 시도? –