1. Javascript代码用标签[%…%]嵌入执行C/C++源码
[%
//用[% % ]标签在Javascript代码中嵌入执行c/c++源码
#include "yc.h"
YHTML *phtml;
void main(YHTML *phtml)
{
::phtml = phtml; //保存网页指针
}
char *getwindir(wchar_t *pstr,wchar_t *pa,char *pb,char *pc)
{
static char m_iniFile[256];
GetWindowsDirectoryA(m_iniFile,256); //获得Windows系统目录
YC_jsRunf(phtml, L"document.write(`%s <br>\n`)",pstr); //执行Javascript代码
YC_jsRunf(phtml, L"document.write(`%s <br>\n`)",pa); //执行Javascript代码
printf("%s\n",pb);
printf("%s\n\n",pc);
return m_iniFile;
}
%]
YC_form({ mystr:"人闲桂花落,", a:'夜静春山空。',
b:"月出惊山鸟,", c:`时鸣春涧中。` })//设置YSP参数request.form
var astr = getwindir(request.form.mystr,request.form.a,request.form.b,
request.form.c); //执行标签[%%]内的c/c++函数getwindir()
document.write(`系统目录: ${astr }`); //astr为调用c/c++代码所获得的系统目录
Javascript代码文件:coin.js
编译:用YC命令: ycc coin.js 生成 coin.exe。
运行:在cmd界面执行coin.exe后,将输出下列文字:
人闲桂花落, <br>
夜静春山空。 <br>
月出惊山鸟,
时鸣春涧中。
系统目录: C:\Windows
2. Javascript代码用YC_cppRun()函数执行C/C++源码文件
YHTML *phtml;
void main(YHTML *phtml)
{
::phtml = phtml; //保存网页指针
if((int)phtml < 1000)
{
printf("This file should be run by Javascript.\n");
return;
}
wchar_t *wiptr;
YC_jsRun(phtml, L"get_title()",0,&wiptr); //执行Javascript代码
YC_jsRunf(phtml, L"printf(`%7s\n`)",wiptr); //执行Javascript代码
}
double run_c_func(char *pb,char *pc)
{
YC_jsRun(phtml, L"runjs_func(`春宵一刻值千金`)"); //执行Javascript代码
printf("%s\n",pb);
printf("%s\n",pc);
return 3.14159265358979323846;
}
c/c++代码文件:work.cpp
YC_cppRun("work.cpp") //执行c/c++文件
let pval = run_c_func("花有清香月有阴。","歌管楼台声细细,") //执行c/c++函数
printf("%s\n",'秋千院落夜沉沉。');
printf("%.15f\n",pval);
function runjs_func(pstr) //该函数被work.cpp执行
{
printf(`${ pstr },\n`)
}
function get_title() //该函数被work.cpp执行
{
return "春宵";
}
Javascript代码文件:work.js
编译:用YC命令: ycc work.js 生成 work.exe。
运行:在cmd界面执行work.exe后,将输出下列文字:
春宵
春宵一刻值千金,
花有清香月有阴。
歌管楼台声细细,
秋千院落夜沉沉。
3.141592653589793