在C++函数中使用_asm int 3和_debugbreak的编译有关问题

在C++函数中使用__asm int 3和__debugbreak的编译问题
在测试中有时候会使用__asm int 3 设置断点,下面的函数是可以通过编译并执行的。
int test(){          
        __asm int 3
}

      考虑到64位的问题,尝试用intrinsics中的__debugbreak代替,但是下面的函数显然通不过编译,因为函数没有返回值。
int test(){          
        __debugbreak();
}

      这样一来,在一些测试问题中,对于某些分支正常情况下是不会被执行到的,为捕捉异常情况时常常在认为不可能执行到的分支上触发断点方便调试。用__asm int 3是没有问题的,但是用__debugbreak总是会得到警告或错误,说分支缺少返回值。
    请教熟悉的同仁们,这两种方式在编译层面的原理,能否像__asm int 3那样无编译错误或警告的使用__debugbreak?
------解决方案--------------------
DebugBreak
The DebugBreak function causes a breakpoint exception to occur in the current process so that the calling thread can signal the debugger and force it to take some action. If the process is not being debugged, the search logic of a standard exception handler is used. In most cases, this causes the calling process to terminate because of an unhandled breakpoint exception. 

VOID DebugBreak(VOID)
 
Parameters
This function has no parameters. 

Return Values
This function does not return a value. 

QuickInfo
  Windows NT: Requires version 3.1 or later.
  Windows: Requires Windows 95 or later.
  Windows CE: Requires version 1.0 or later.
  Header: Declared in winbase.h.
  Import Library: Use kernel32.lib.

See Also
Debugging Overview, Debugging Functions, DebugActiveProcess