我有一个奇怪的问题。当我尝试编译下面的代码时,它按预期工作而没有失败:
#include <iostream>
#include <Windows.h>
int main(){
FILE *f = fopen("trystl.geo","w");
fprintf(f,"Merge \"trystl.stl\";");
fprintf(f,"\n");
fprintf(f,"Surface Loop(2) = {1};");
fprintf(f,"\n");
fprintf(f,"Volume(3) = {2};");
fclose(f);
return 0;
}
但是当我尝试将此程序连接到具有 FLTK 用户界面的按钮时,它给了我一个断言运行时错误。我的代码段:
void UserInterface::cb_m_BtnSTLToGEOConverter_i(Fl_Button*, void*){
//OnSTLToGEOConvert();
FILE *f = fopen("trystl.geo","w");
fprintf(f,"Merge \"trystl.stl\";");
fprintf(f,"\n");
fprintf(f,"Surface Loop(2) = {1};");
fprintf(f,"\n");
fprintf(f,"Volume(3) = {2};");
fclose(f);
}
void UserInterface::cb_m_BtnSTLToGEOConverter(Fl_Button* o, void* v){
((UserInterface*)(o->parent()->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_m_BtnSTLToGEOConverter_i(o,v);
}
当用户按下按钮时,我希望程序创建一个名为 trystl.geo 的文件并执行显示的操作。但是当编译并打开程序并单击按钮时,它会说:
调试断言失败!
程序:*.......\src\fprintf.c 第 55 行:
表达式:(str!NULL)
中止重试或忽略...
我正在使用 Visual Studio 2010。