Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用c+翻译u地址+\linux 我试图在C++中生成用户线程,所以当试图初始化它们时,我得到了编译器错误:在这个范围内没有声明TrpReTeAudio< < /P> #include <iostream> #include <cstdlib> #include <csignal> #include <csetjmp> #define JB_SP 6 //Location in the code #define JB_PC 7 //Stack pointer #define STACK_SIZE 10 typedef unsigned long address_t; //64bit address sigjmp_buf jbuf[3]; char stack1[STACK_SIZE]; void f(){ } void setup(){ unsigned int sp, pc; sp = (address_t)stack1 + STACK_SIZE - sizeof(address_t); pc = (address_t)f; sigsetjmp(jbuf[0],1); (jbuf[0]->__jmpbuf)[JB_SP] = translate_address(sp); (jbuf[0]->__jmpbuf)[JB_PC] = translate_address(pc); sigemptyset(&jbuf[0]->__saved_mask);//empty saved signal mask } int main(){ return 1; } #包括 #包括 #包括 #包括 #在代码中定义JB_SP 6//位置 #定义JB_PC 7//堆栈指针 #定义堆栈大小为10 typedef无符号长地址\u t//64位地址 sigjmp_buf jbuf[3]; char stack1[堆栈大小]; void f(){ } 无效设置(){ 无符号整数sp,pc; sp=(地址)堆栈1+堆栈大小-sizeof(地址); pc=(地址)f; sigsetjmp(jbuf[0],1); (jbuf[0]->uu jmpbuf)[JB_SP]=翻译地址(SP); (jbuf[0]->uu jmpbuf)[JB_PC]=翻译地址(PC); sigemptyset(&jbuf[0]->uu保存的u掩码);//清空保存的信号掩码 } int main(){ 返回1; }_C++_Linux_Translation - Fatal编程技术网

用c+翻译u地址+\linux 我试图在C++中生成用户线程,所以当试图初始化它们时,我得到了编译器错误:在这个范围内没有声明TrpReTeAudio< < /P> #include <iostream> #include <cstdlib> #include <csignal> #include <csetjmp> #define JB_SP 6 //Location in the code #define JB_PC 7 //Stack pointer #define STACK_SIZE 10 typedef unsigned long address_t; //64bit address sigjmp_buf jbuf[3]; char stack1[STACK_SIZE]; void f(){ } void setup(){ unsigned int sp, pc; sp = (address_t)stack1 + STACK_SIZE - sizeof(address_t); pc = (address_t)f; sigsetjmp(jbuf[0],1); (jbuf[0]->__jmpbuf)[JB_SP] = translate_address(sp); (jbuf[0]->__jmpbuf)[JB_PC] = translate_address(pc); sigemptyset(&jbuf[0]->__saved_mask);//empty saved signal mask } int main(){ return 1; } #包括 #包括 #包括 #包括 #在代码中定义JB_SP 6//位置 #定义JB_PC 7//堆栈指针 #定义堆栈大小为10 typedef无符号长地址\u t//64位地址 sigjmp_buf jbuf[3]; char stack1[堆栈大小]; void f(){ } 无效设置(){ 无符号整数sp,pc; sp=(地址)堆栈1+堆栈大小-sizeof(地址); pc=(地址)f; sigsetjmp(jbuf[0],1); (jbuf[0]->uu jmpbuf)[JB_SP]=翻译地址(SP); (jbuf[0]->uu jmpbuf)[JB_PC]=翻译地址(PC); sigemptyset(&jbuf[0]->uu保存的u掩码);//清空保存的信号掩码 } int main(){ 返回1; }

用c+翻译u地址+\linux 我试图在C++中生成用户线程,所以当试图初始化它们时,我得到了编译器错误:在这个范围内没有声明TrpReTeAudio< < /P> #include <iostream> #include <cstdlib> #include <csignal> #include <csetjmp> #define JB_SP 6 //Location in the code #define JB_PC 7 //Stack pointer #define STACK_SIZE 10 typedef unsigned long address_t; //64bit address sigjmp_buf jbuf[3]; char stack1[STACK_SIZE]; void f(){ } void setup(){ unsigned int sp, pc; sp = (address_t)stack1 + STACK_SIZE - sizeof(address_t); pc = (address_t)f; sigsetjmp(jbuf[0],1); (jbuf[0]->__jmpbuf)[JB_SP] = translate_address(sp); (jbuf[0]->__jmpbuf)[JB_PC] = translate_address(pc); sigemptyset(&jbuf[0]->__saved_mask);//empty saved signal mask } int main(){ return 1; } #包括 #包括 #包括 #包括 #在代码中定义JB_SP 6//位置 #定义JB_PC 7//堆栈指针 #定义堆栈大小为10 typedef无符号长地址\u t//64位地址 sigjmp_buf jbuf[3]; char stack1[堆栈大小]; void f(){ } 无效设置(){ 无符号整数sp,pc; sp=(地址)堆栈1+堆栈大小-sizeof(地址); pc=(地址)f; sigsetjmp(jbuf[0],1); (jbuf[0]->uu jmpbuf)[JB_SP]=翻译地址(SP); (jbuf[0]->uu jmpbuf)[JB_PC]=翻译地址(PC); sigemptyset(&jbuf[0]->uu保存的u掩码);//清空保存的信号掩码 } int main(){ 返回1; },c++,linux,translation,C++,Linux,Translation,我是不是想把它包括进去?还是有不同的问题 谢谢。翻译地址不是Linux功能。如果您参考的是某种书籍或示例代码,它应该解释您应该从何处获得此函数。如果不是,那么很可能它不适合Linux(或者是一个非常非常糟糕的参考/示例) 此外,您不应直接修改jmp_buf或sigjmp_buf的内容。这些都是体系结构和平台相关的结构,只有C库才能处理它们。由于这些结构的内容依赖于操作系统,如果在修改sigjmp_buf时使用了一个用于其他操作系统的引用,那么坏事情就会发生 相反,您应该为用户线程(光纤)或操作系

我是不是想把它包括进去?还是有不同的问题


谢谢。

翻译地址不是Linux功能。如果您参考的是某种书籍或示例代码,它应该解释您应该从何处获得此函数。如果不是,那么很可能它不适合Linux(或者是一个非常非常糟糕的参考/示例)

此外,您不应直接修改
jmp_buf
sigjmp_buf
的内容。这些都是体系结构和平台相关的结构,只有C库才能处理它们。由于这些结构的内容依赖于操作系统,如果在修改
sigjmp_buf
时使用了一个用于其他操作系统的引用,那么坏事情就会发生


相反,您应该为用户线程(光纤)或操作系统级线程使用和。

这个“翻译地址”应该来自哪里?翻译地址是什么???它是用户定义的功能吗?您是否可以提供一些关于谁或什么提供了
translate\u address()
?我以前从来没有听说过这个函数,
man-k translate\u address
找不到它,而谷歌在点击量的第一页上也没有提供任何看起来像是一个模糊不清的常用库例程的东西。