| //aardio调用C语言函数 var code = /****
 #include <stdio.h>
 #include <stdlib.h>
 
 //C99 __VA_ARGS__
 #define dprintf(level, __VA_ARGS__) printf(__VA_ARGS__)
 
 int helloW (const wchar_t *msg)
 {
 io_reopen(); //打开控制台窗口
 
 int n = 10;//变量声明可以放函数中间
 long long ln = 100;//64位整数(也就是aardio中的long),C99
 char s[n]; //变长数组,C99 VLA
 
 //C99标准引入了Designated Initializers特性使得数组、结构体和联合体的初始化更加灵活和方便。
 struct { int x, y; } st[10] = { [0].x = 1, [0].y = 2 };
 int tab[10] = { 1, 2, [5] = 5, [9] = 9};
 
 //C99 compound literal
 int *p = (int []){ 1, 2, 3 };
 
 //GCC 数组初始化
 struct { int x, y; } st2 = { x: 1, y: 1};
 struct { int x, y; } st3 = { .x = 1, .y = 1};
 
 //GCC case ranges
 int a = 2;
 switch(a) {
 case 1 ... 9:
 printf("range 1 to 9\n");
 break;
 default:
 printf("unexpected\n");
 break;
 }
 
 //GCC __attribute__语句
 int a2 __attribute__ ( ( aligned(8) ) );
 
 return 0;
 }
 
 ****/
 import win;
 import console;
 import tcc;
 
 var vm = tcc(); //创建TCC编译器
 
 vm.compile(code); //编译UTF8编码的C源码,必须使用最新版TCC扩展库
 
 //调用C函数
 var ret = vm.helloW('测试一下'u);
 console.log( "C函数返回值", ret )
 
 console.pause();
 
 混合编程。
 |