- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理 Wolf,我遇到了一个错误,有时被检测为段错误,有时被检测为 sig 中止,有时我们也收到此错误:“线程已经初始化此类!”
我使用了lldb,他显示WaitEvent函数出错了。 SDL_Event 事件;是由这个函数初始化的,有些我不明白我怎么会出错。
int main(int ac, char **av)
{
int fd;
t_var var;
t_player player;
ft_init_sdl(&var);
init_key_move(&var); // int attribution
if (ac != 2 || (fd = open(av[1], O_RDONLY)) < 0)
exit(EXIT_FAILURE);
parsing_map(fd, &var); // map parsing
var.m = fill_map_struct(var); // map parsing again
player_data_set(&player, &var); // int atribution for the player
open_wall_texture(&var); //loading texture form bmp with SDL_LoadBPM
open_img_opt_button(&var); // same
display(&var, &player); // displaying the game
return (0);
}
void ft_init_sdl(t_var *var)
{
var->sdl.window = NULL;
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) < 0)
return ;
var->sdl.window = SDL_CreateWindow("WOLFCRAFT", SDL_WINDOWPOS_CENTERED, \
SDL_WINDOWPOS_CENTERED, SIZE_X, SIZE_Y, 0);
var->sdl.render = SDL_CreateRenderer(var->sdl.window, -1, 0);
if (!var->sdl.window || !var->sdl.render)
return ;
}
void display_3(t_var *var, t_player *pl)
{
if (var->sdl.event.type == SDL_QUIT)
ft_clean_quit(var->sdl.render, var->sdl.window);
else if (var->sdl.event.key.keysym.sym == SDLK_ESCAPE)
ft_clean_quit(var->sdl.render, var->sdl.window);
else if (var->sdl.event.type == SDL_KEYDOWN && var->menu_is_act == 1)
ft_move(var->sdl.event.key.keysym.sym, pl, var->sdl.render, var);
if (var->sdl.event.type == SDL_MOUSEMOTION && (var->menu_is_act == 1))
{
var->on = 1;
menu_button_in_game(var, pl);
}
else if (var->sdl.event.type == SDL_MOUSEBUTTONDOWN \
&& (var->menu_is_act == 1))
{
var->on = 0;
menu_button_in_game(var, pl);
}
}
void display_2(t_var *var, t_player *pl, int *token)
{
init_var_display(var, token);
ft_menu(var, pl);
}
void display(t_var *var, t_player *pl)
{
int token;
display_2(var, pl, &token);
while (SDL_WaitEvent(&var->sdl.event))
{
if (var->sdl.event.type == SDL_MOUSEMOTION \
&& (var->menu_is_act == 0 || var->menu_is_act == 2))
{
var->on = 1;
ft_menu(var, pl);
}
else if (var->sdl.event.type == SDL_MOUSEBUTTONDOWN \
&& (var->menu_is_act == 0 || var->menu_is_act == 2))
{
var->on = 0;
ft_menu(var, pl);
}
else
display_3(var, pl);
if (var->menu_is_act == 2)
{
change_key(var, pl);
choose_key(var, pl);
}
}
}
我们花了一周时间寻找解决方案,但一无所获。
谢谢。
这是 lldb 用“bt”向我显示的内容。
Process 53017 launched: '/Users/vgauther/Desktop/work/wolf3d' (x86_64)
Process 53017 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
frame #0: 0x00007fff542b22ce libobjc.A.dylib`_class_initialize + 37
libobjc.A.dylib`_class_initialize:
-> 0x7fff542b22ce <+37>: movq 0x20(%r14), %rax
0x7fff542b22d2 <+41>: movq %rax, %rcx
0x7fff542b22d5 <+44>: andq %rbx, %rcx
0x7fff542b22d8 <+47>: movq 0x8(%rcx), %rcx
Target 0: (wolf3d) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
* frame #0: 0x00007fff542b22ce libobjc.A.dylib`_class_initialize + 37
frame #1: 0x00007fff542b1e8f libobjc.A.dylib`lookUpImpOrForward + 228
frame #2: 0x00007fff542b1914 libobjc.A.dylib`_objc_msgSend_uncached + 68
frame #3: 0x00007fff2a5696b6 AppKit`-[NSTextFieldCell _allowsVibrancyForControlView:] + 394
frame #4: 0x00007fff2a557871 AppKit`-[NSControl allowsVibrancy] + 49
frame #5: 0x00007fff2a55782a AppKit`-[NSView(NSInternal) _needsVibrancy] + 83
frame #6: 0x00007fff2a55766d AppKit`-[NSView(NSInternal) _updateVibrancy] + 26
frame #7: 0x00007fff2a674a25 AppKit`-[NSView viewWillDraw] + 87
frame #8: 0x00007fff2adeb6cf AppKit`_NSViewWillDraw + 45
frame #9: 0x00007fff2a674e21 AppKit`-[NSView viewWillDraw] + 1107
frame #10: 0x00007fff2adeb6cf AppKit`_NSViewWillDraw + 45
frame #11: 0x00007fff2a674e21 AppKit`-[NSView viewWillDraw] + 1107
frame #12: 0x00007fff2adeb6cf AppKit`_NSViewWillDraw + 45
frame #13: 0x00007fff2a674e21 AppKit`-[NSView viewWillDraw] + 1107
frame #14: 0x00007fff2adeb6cf AppKit`_NSViewWillDraw + 45
frame #15: 0x00007fff2a6746b9 AppKit`-[NSView _sendViewWillDrawInRect:clipRootView:] + 1640
frame #16: 0x00007fff2a672efd AppKit`-[NSView displayIfNeeded] + 1142
frame #17: 0x00007fff2a672a52 AppKit`-[NSWindow displayIfNeeded] + 321
frame #18: 0x00007fff2ae1360d AppKit`___NSWindowGetDisplayCycleObserver_block_invoke.5902 + 308
frame #19: 0x00007fff2a67255e AppKit`__37+[NSDisplayCycle currentDisplayCycle]_block_invoke + 695
frame #20: 0x00007fff38314877 QuartzCore`CA::Transaction::run_commit_handlers(CATransactionPhase) + 49
frame #21: 0x00007fff38313339 QuartzCore`CA::Transaction::commit() + 171
frame #22: 0x00007fff2ae2aa72 AppKit`__65+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayRefresh]_block_invoke + 283
frame #23: 0x00007fff2cfb8257 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
frame #24: 0x00007fff2cfb817f CoreFoundation`__CFRunLoopDoObservers + 527
frame #25: 0x00007fff2cf9a6f8 CoreFoundation`__CFRunLoopRun + 1240
frame #26: 0x00007fff2cf99f93 CoreFoundation`CFRunLoopRunSpecific + 483
frame #27: 0x00007fff2c284d96 HIToolbox`RunCurrentEventLoopInMode + 286
frame #28: 0x00007fff2c284a0f HIToolbox`ReceiveNextEventCommon + 366
frame #29: 0x00007fff2c284884 HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 64
frame #30: 0x00007fff2a533a3b AppKit`_DPSNextEvent + 2085
frame #31: 0x00007fff2acc9e34 AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3044
frame #32: 0x000000010017843a libSDL2-2.0.0.dylib`Cocoa_PumpEvents(_this=<unavailable>) at SDL_cocoaevents.m:438 [opt]
frame #33: 0x00000001000d5ecd libSDL2-2.0.0.dylib`SDL_WaitEventTimeout_REAL [inlined] SDL_PumpEvents_REAL at SDL_events.c:645 [opt]
frame #34: 0x00000001000d5eba libSDL2-2.0.0.dylib`SDL_WaitEventTimeout_REAL(event=0x00007ffeefbff1c8, timeout=-1) at SDL_events.c:680 [opt]
frame #35: 0x00000001000030e1 wolf3d`display + 49
frame #36: 0x00000001000012b9 wolf3d`main + 265
frame #37: 0x00007fff54ed8015 libdyld.dylib`start + 1
/Users/vgauther/Desktop/check_compil/SDL2-2.0.9/src/video/cocoa/SDL_cocoamodes.m:118:11: warning: 'CGDisplayModeCopyPixelEncoding' is deprecated: first deprecated in macOS 10.11 [-Wdeprecated-declarations]
fmt = CGDisplayModeCopyPixelEncoding(vidmode);
^
/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDirectDisplay.h:176:34: note: 'CGDisplayModeCopyPixelEncoding' has been explicitly marked deprecated here
CG_EXTERN CFStringRef __nullable CGDisplayModeCopyPixelEncoding(
^
/Users/vgauther/Desktop/check_compil/SDL2-2.0.9/src/video/cocoa/SDL_cocoamodes.m:172:64: warning: 'CGDisplayIOServicePort' is deprecated: first deprecated in macOS 10.9 [-Wdeprecated-declarations]
CFDictionaryRef deviceInfo = IODisplayCreateInfoDictionary(CGDisplayIOServicePort(displayID), kIODisplayOnlyPreferredName);
^
/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDisplayConfiguration.h:372:24: note: 'CGDisplayIOServicePort' has been explicitly marked deprecated here
CG_EXTERN io_service_t CGDisplayIOServicePort(CGDirectDisplayID display)
^
2 warnings generated.
CC build/SDL_cocoamouse.lo
CC build/SDL_cocoamousetap.lo
CC build/SDL_cocoaopengl.lo
/Users/vgauther/Desktop/check_compil/SDL2-2.0.9/src/video/cocoa/SDL_cocoaopengl.m:219:21: warning: 'NSOpenGLPFAStereo' is deprecated: first deprecated in macOS 10.12 [-Wdeprecated-declarations]
attr[i++] = NSOpenGLPFAStereo;
^
/System/Library/Frameworks/AppKit.framework/Headers/NSOpenGL.h:78:2: note: 'NSOpenGLPFAStereo' has been explicitly marked deprecated here
NSOpenGLPFAStereo NS_ENUM_DEPRECATED_MAC(10_0, 10_12) = 6,
^
1 warning generated.
CC build/SDL_cocoaopengles.lo
CC build/SDL_cocoashape.lo
CC build/SDL_cocoavideo.lo
CC build/SDL_cocoavulkan.lo
CC build/SDL_cocoawindow.lo
/Users/vgauther/Desktop/check_compil/SDL2-2.0.9/src/video/cocoa/SDL_cocoawindow.m:342:11: warning: 'setAcceptsTouchEvents:' is deprecated: first deprecated in macOS 10.12.2 - Use allowedTouchTypes instead [-Wdeprecated-declarations]
[view setAcceptsTouchEvents:YES];
^
/System/Library/Frameworks/AppKit.framework/Headers/NSView.h:274:16: note: property 'acceptsTouchEvents' is declared deprecated here
@property BOOL acceptsTouchEvents NS_DEPRECATED_MAC(10_6, 10_12_2, "Use allowedTouchTypes instead");
^
/System/Library/Frameworks/AppKit.framework/Headers/NSView.h:274:16: note: 'setAcceptsTouchEvents:' has been explicitly marked deprecated here
1 warning generated.
最佳答案
在main
中,您没有检查ft_sdl_init
的结果是否正确,因此,即使使用无效的窗口/渲染器,您的程序也可能运行。
这个条件绝对没有任何作用:
if (!var->sdl.window || !var->sdl.render)
return ;
如果为真,则离开该函数。如果为 false,它也会离开该函数。没有区别。
最重要的是,如果窗口/渲染器创建失败,SDL 将返回 NULL。来自 SDL wiki on SDL_CreateWindow :
Returns the window that was created or NULL on failure; call SDL_GetError() for more information.
关于c - 为什么函数 SDL_WaitEvent (SDL2) 在我的代码中出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59079441/
我需要将文本放在 中在一个 Div 中,在另一个 Div 中,在另一个 Div 中。所以这是它的样子: #document Change PIN
奇怪的事情发生了。 我有一个基本的 html 代码。 html,头部, body 。(因为我收到了一些反对票,这里是完整的代码) 这是我的CSS: html { backgroun
我正在尝试将 Assets 中的一组图像加载到 UICollectionview 中存在的 ImageView 中,但每当我运行应用程序时它都会显示错误。而且也没有显示图像。 我在ViewDidLoa
我需要根据带参数的 perl 脚本的输出更改一些环境变量。在 tcsh 中,我可以使用别名命令来评估 perl 脚本的输出。 tcsh: alias setsdk 'eval `/localhome/
我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!”来自右上方的以下 Ra
这是我的方法 void login(Event event);我想知道 Kotlin 中应该如何 最佳答案 在 Kotlin 中通配符运算符是 * 。它指示编译器它是未知的,但一旦知道,就不会有其他类
看下面的代码 for story in book if story.title.length < 140 - var story
我正在尝试用 C 语言学习字符串处理。我写了一个程序,它存储了一些音乐轨道,并帮助用户检查他/她想到的歌曲是否存在于存储的轨道中。这是通过要求用户输入一串字符来完成的。然后程序使用 strstr()
我正在学习 sscanf 并遇到如下格式字符串: sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c); 我理解 %[^:] 部分意味着扫描直到遇到 ':' 并将其分配给 a。:
def char_check(x,y): if (str(x) in y or x.find(y) > -1) or (str(y) in x or y.find(x) > -1):
我有一种情况,我想将文本文件中的现有行包含到一个新 block 中。 line 1 line 2 line in block line 3 line 4 应该变成 line 1 line 2 line
我有一个新项目,我正在尝试设置 Django 调试工具栏。首先,我尝试了快速设置,它只涉及将 'debug_toolbar' 添加到我的已安装应用程序列表中。有了这个,当我转到我的根 URL 时,调试
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,它将使用固定的 a=a1 和 c=c1 调用 f: g = @(b) f(a1, b,
我不明白为什么 ForEach 中的元素之间有多余的垂直间距在 VStack 里面在 ScrollView 里面使用 GeometryReader 时渲染自定义水平分隔线。 Scrol
我想知道,是否有关于何时使用 session 和 cookie 的指南或最佳实践? 什么应该和什么不应该存储在其中?谢谢! 最佳答案 这些文档很好地了解了 session cookie 的安全问题以及
我在 scipy/numpy 中有一个 Nx3 矩阵,我想用它制作一个 3 维条形图,其中 X 轴和 Y 轴由矩阵的第一列和第二列的值、高度确定每个条形的 是矩阵中的第三列,条形的数量由 N 确定。
假设我用两种不同的方式初始化信号量 sem_init(&randomsem,0,1) sem_init(&randomsem,0,0) 现在, sem_wait(&randomsem) 在这两种情况下
我怀疑该值如何存储在“WORD”中,因为 PStr 包含实际输出。? 既然Pstr中存储的是小写到大写的字母,那么在printf中如何将其给出为“WORD”。有人可以吗?解释一下? #include
我有一个 3x3 数组: var my_array = [[0,1,2], [3,4,5], [6,7,8]]; 并想获得它的第一个 2
我意识到您可以使用如下方式轻松检查焦点: var hasFocus = true; $(window).blur(function(){ hasFocus = false; }); $(win
我是一名优秀的程序员,十分优秀!