누구나 TCC의 libtcc를 사용하여 double
을 반환하는 함수를 성공적으로 호출 했습니까?TCC가 이중을 반환하는 함수를 호출합니다.
내 코드에 double
을 반환하는 함수를 정의한 후 tcc_add_symbol
을 통해 libtcc에 추가했습니다. tcc 스크립트에서이 함수를 호출하고 반환 된 값을 얻었을 때 값은 0.000이었습니다. 이는 내가 기대했던 것이 아니 었습니다.
코드 :
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "libtcc.h"
double get_double()
{
return 80.333;
}
int get_int()
{
return 333;
}
char my_program[] =
"int foo()\n"
"{\n"
" printf(\"Hello World!\\n\");\n"
" printf(\"double: %.4f\\n\", get_double()); \n"
" printf(\"int: %d\\n\", get_int()); \n"
" return 0;\n"
"}\n";
int main(int argc, char **argv)
{
TCCState *s;
typedef int (*func_type)();
func_type func;
s = tcc_new();
if (!s) {
fprintf(stderr, "Could not create tcc state\n");
exit(1);
}
tcc_set_lib_path(s, "TCC");
tcc_set_output_type(s, TCC_OUTPUT_MEMORY);
if (tcc_compile_string(s, my_program) == -1)
return 1;
tcc_add_symbol(s, "get_double", get_double);
tcc_add_symbol(s, "get_int", get_int);
if (tcc_relocate(s, TCC_RELOCATE_AUTO) < 0)
return 1;
func = (func_type)tcc_get_symbol(s, "foo");
if (!func)
return 1;
func();
tcc_delete(s);
getchar();
return 0;
}
코드를 실행의 결과 :
Hello World!
double: 0.0000
int: 333
가 왜 get_double()
함수 반환 0.0000하지만 get_int()
이 성공 하는가?
대단히 감사합니다. TCC 예제가 함수를 선언하지 않았기 때문입니다. – user1531899
당신은 오신 것을 환영합니다. 답이 문제를 해결하면 답을 좋아하거나 받아 들일 것을 정중히 묻기를 바랍니다. – mikijov