libACE 相关的 clang 构建错误`提供给类函数宏调用的参数太少`

libACE related clang build error `too few arguments provided to function-like macro invocation`

```

dep/acelite/ace/Reactor_Impl.h:83:63: error: too few arguments provided to function-like macro invocation
  virtual int dispatch_notify (ACE_Notification_Buffer &buffer) = 0;
                                                              ^
/usr/include/dispatch/object.h:454:9: note: macro 'dispatch_notify' defined here
#define dispatch_notify(object, queue, notification_block) \

    ^

```

OS: macOS 10.12.2
Clang:Apple LLVM 版本 8.0.0 (clang-800.0.42.1)
ACE 版本:6.4.2
Socket.h
#include <ace/Svc_Handler.h>

CMakeLists.txt

set(ace_STAT_SRCS 
  ACE.cpp
  ACE_crc32.cpp
  ACE_crc_ccitt.cpp
  ace_wchar.cpp
  Activation_Queue.cpp
  Active_Map_Manager.cpp
  Addr.cpp
  Argv_Type_Converter.cpp
  Assert.cpp
  Asynch_IO.cpp
  Asynch_IO_Impl.cpp
  Asynch_Pseudo_Task.cpp
  ATM_Acceptor.cpp
  ATM_Addr.cpp
  ATM_Connector.cpp
  ATM_Params.cpp
  ATM_QoS.cpp
  ATM_Stream.cpp
  Atomic_Op.cpp
  Atomic_Op_Sparc.c
  Barrier.cpp
  Base_Thread_Adapter.cpp
  Based_Pointer_Repository.cpp
  Basic_Stats.cpp
  Basic_Types.cpp
  Capabilities.cpp
  CDR_Base.cpp
  CDR_Size.cpp
  CDR_Stream.cpp
  Cleanup.cpp
  Codecs.cpp
  Codeset_IBM1047.cpp
  Codeset_Registry.cpp
  Codeset_Registry_db.cpp
  Condition_Attributes.cpp
  Condition_Recursive_Thread_Mutex.cpp
  Condition_Thread_Mutex.cpp
  Configuration.cpp
  Configuration_Import_Export.cpp
  Connection_Recycling_Strategy.cpp
  Containers.cpp
  Copy_Disabled.cpp
  Date_Time.cpp
  DEV.cpp
  DEV_Addr.cpp
  DEV_Connector.cpp
  DEV_IO.cpp
  Dev_Poll_Reactor.cpp
  Dirent.cpp
  Dirent_Selector.cpp
  DLL.cpp
  DLL_Manager.cpp
  Dump.cpp
  Dynamic.cpp
  Dynamic_Message_Strategy.cpp
  Dynamic_Service_Base.cpp
  Dynamic_Service_Dependency.cpp
  Encoding_Converter.cpp
  Encoding_Converter_Factory.cpp
  Event_Base.cpp
  Event_Handler.cpp
  Event_Handler_Handle_Timeout_Upcall.cpp
  FIFO.cpp
  FIFO_Recv.cpp
  FIFO_Recv_Msg.cpp
  FIFO_Send.cpp
  FIFO_Send_Msg.cpp
  FILE.cpp
  FILE_Addr.cpp
  FILE_Connector.cpp
  FILE_IO.cpp
  File_Lock.cpp
  Filecache.cpp
  Flag_Manip.cpp
  Framework_Component.cpp
  Functor.cpp
  Functor_String.cpp
  Get_Opt.cpp
  Handle_Ops.cpp
  Handle_Set.cpp
  Hashable.cpp
  High_Res_Timer.cpp
  ICMP_Socket.cpp
  INET_Addr.cpp
  Init_ACE.cpp
  IO_Cntl_Msg.cpp
  IO_SAP.cpp
  IOStream.cpp
  IPC_SAP.cpp
  Lib_Find.cpp
  Local_Memory_Pool.cpp
  Local_Name_Space.cpp
  Local_Tokens.cpp
  Lock.cpp
  Log_Category.cpp
  Log_Msg.cpp
  Log_Msg_Backend.cpp
  Log_Msg_Callback.cpp
  Log_Msg_IPC.cpp
  Log_Msg_NT_Event_Log.cpp
  Log_Msg_UNIX_Syslog.cpp
  Log_Record.cpp
  Logging_Strategy.cpp
  LSOCK.cpp
  LSOCK_Acceptor.cpp
  LSOCK_CODgram.cpp
  LSOCK_Connector.cpp
  LSOCK_Dgram.cpp
  LSOCK_Stream.cpp
  Malloc.cpp
  Malloc_Allocator.cpp
  MEM_Acceptor.cpp
  MEM_Addr.cpp
  MEM_Connector.cpp
  MEM_IO.cpp
  Mem_Map.cpp
  MEM_SAP.cpp
  MEM_Stream.cpp
  Message_Block.cpp
  Message_Queue.cpp
  Message_Queue_NT.cpp
  Message_Queue_Vx.cpp
  Method_Request.cpp
  MMAP_Memory_Pool.cpp
  Monitor_Admin.cpp
  Monitor_Admin_Manager.cpp
  Monitor_Base.cpp
  Monitor_Control_Action.cpp
  Monitor_Control_Types.cpp
  Monitor_Point_Registry.cpp
  Monitor_Size.cpp
  Monotonic_Time_Policy.cpp
  Msg_WFMO_Reactor.cpp
  Multihomed_INET_Addr.cpp
  Mutex.cpp
  Name_Proxy.cpp
  Name_Request_Reply.cpp
  Name_Space.cpp
  Naming_Context.cpp
  Netlink_Addr.cpp
  Notification_Queue.cpp
  Notification_Strategy.cpp
  NT_Service.cpp
  Obchunk.cpp
  Object_Manager.cpp
  Object_Manager_Base.cpp
  Obstack.cpp
  OS_Errno.cpp
  OS_Log_Msg_Attributes.cpp
  OS_main.cpp
  OS_NS_arpa_inet.cpp
  OS_NS_ctype.cpp
  OS_NS_dirent.cpp
  OS_NS_dlfcn.cpp
  OS_NS_errno.cpp
  OS_NS_fcntl.cpp
  OS_NS_math.cpp
  OS_NS_netdb.cpp
  OS_NS_poll.cpp
  OS_NS_pwd.cpp
  OS_NS_regex.cpp
  OS_NS_signal.cpp
  OS_NS_stdio.cpp
  OS_NS_stdlib.cpp
  OS_NS_string.cpp
  OS_NS_strings.cpp
  OS_NS_stropts.cpp
  OS_NS_sys_mman.cpp
  OS_NS_sys_msg.cpp
  OS_NS_sys_resource.cpp
  OS_NS_sys_select.cpp
  OS_NS_sys_sendfile.cpp
  OS_NS_sys_shm.cpp
  OS_NS_sys_socket.cpp
  OS_NS_sys_stat.cpp
  OS_NS_sys_time.cpp
  OS_NS_sys_uio.cpp
  OS_NS_sys_utsname.cpp
  OS_NS_sys_wait.cpp
  OS_NS_Thread.cpp
  OS_NS_time.cpp
  OS_NS_unistd.cpp
  OS_NS_wchar.cpp
  OS_NS_wctype.cpp
  OS_QoS.cpp
  OS_Thread_Adapter.cpp
  OS_TLI.cpp
  Pagefile_Memory_Pool.cpp
  Parse_Node.cpp
  PI_Malloc.cpp
  Ping_Socket.cpp
  Pipe.cpp
  POSIX_Asynch_IO.cpp
  POSIX_CB_Proactor.cpp
  POSIX_Proactor.cpp
  Priority_Reactor.cpp
  Proactor.cpp
  Proactor_Impl.cpp
  Process.cpp
  Process_Manager.cpp
  Process_Mutex.cpp
  Process_Semaphore.cpp
  Profile_Timer.cpp
  Reactor.cpp
  Reactor_Impl.cpp
  Reactor_Notification_Strategy.cpp
  Reactor_Timer_Interface.cpp
  Read_Buffer.cpp
  Recursive_Thread_Mutex.cpp
  Recyclable.cpp
  Registry.cpp
  Registry_Name_Space.cpp
  Remote_Name_Space.cpp
  Remote_Tokens.cpp
  Rtems_init.c
  RW_Mutex.cpp
  RW_Process_Mutex.cpp
  RW_Thread_Mutex.cpp
  Sample_History.cpp
  Sbrk_Memory_Pool.cpp
  Sched_Params.cpp
  Select_Reactor_Base.cpp
  Semaphore.cpp
  Service_Config.cpp
  Service_Gestalt.cpp
  Service_Manager.cpp
  Service_Object.cpp
  Service_Repository.cpp
  Service_Types.cpp
  Shared_Memory.cpp
  Shared_Memory_MM.cpp
  Shared_Memory_Pool.cpp
  Shared_Memory_SV.cpp
  Shared_Object.cpp
  Sig_Adapter.cpp
  Sig_Handler.cpp
  Signal.cpp
  SOCK.cpp
  SOCK_Acceptor.cpp
  SOCK_CODgram.cpp
  Sock_Connect.cpp
  SOCK_Connector.cpp
  SOCK_Dgram.cpp
  SOCK_Dgram_Bcast.cpp
  SOCK_Dgram_Mcast.cpp
  SOCK_IO.cpp
  SOCK_Netlink.cpp
  SOCK_SEQPACK_Acceptor.cpp
  SOCK_SEQPACK_Association.cpp
  SOCK_SEQPACK_Connector.cpp
  SOCK_Stream.cpp
  SPIPE.cpp
  SPIPE_Acceptor.cpp
  SPIPE_Addr.cpp
  SPIPE_Connector.cpp
  SPIPE_Stream.cpp
  SString.cpp
  Stack_Trace.cpp
  Stats.cpp
  String_Base_Const.cpp
  SUN_Proactor.cpp
  SV_Message.cpp
  SV_Message_Queue.cpp
  SV_Semaphore_Complex.cpp
  SV_Semaphore_Simple.cpp
  SV_Shared_Memory.cpp
  Svc_Conf_Lexer.cpp
  Svc_Conf_y.cpp
  Synch_Options.cpp
  System_Time.cpp
  Task.cpp
  Thread.cpp
  Thread_Adapter.cpp
  Thread_Control.cpp
  Thread_Exit.cpp
  Thread_Hook.cpp
  Thread_Manager.cpp
  Thread_Mutex.cpp
  Thread_Semaphore.cpp
  Throughput_Stats.cpp
  Time_Policy.cpp
  Time_Value.cpp
  Timeprobe.cpp
  TLI.cpp
  TLI_Acceptor.cpp
  TLI_Connector.cpp
  TLI_Stream.cpp
  Token.cpp
  Token_Collection.cpp
  Token_Invariants.cpp
  Token_Manager.cpp
  Token_Request_Reply.cpp
  TP_Reactor.cpp
  Trace.cpp
  TSS_Adapter.cpp
  TTY_IO.cpp
  UNIX_Addr.cpp
  UPIPE_Acceptor.cpp
  UPIPE_Connector.cpp
  UPIPE_Stream.cpp
  UTF16_Encoding_Converter.cpp
  UTF32_Encoding_Converter.cpp
  UTF8_Encoding_Converter.cpp
  UUID.cpp
  WFMO_Reactor.cpp
  WIN32_Asynch_IO.cpp
  WIN32_Proactor.cpp
  XML_Svc_Conf.cpp
  XTI_ATM_Mcast.cpp
)

include_directories(${CMAKE_SOURCE_DIR}/dep/acelite)

add_definitions(-DACE_BUILD_DLL)

add_library(ace SHARED ${ace_STAT_SRCS})

if (MINGW)
  target_link_libraries(ace ws2_32 iphlpapi netapi32 mswsock)
endif()

install(
    TARGETS ace
    RUNTIME DESTINATION "${BIN_DIR}"
    LIBRARY DESTINATION "${LIBS_DIR}"
)

if(WIN32)
  install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${BUILD_TYPE}/ace.pdb" DESTINATION "${BIN_DIR}" CONFIGURATIONS Debug)
endif()

如果有人遇到同样的问题,下面会解决:

#if defined( __APPLE__ )
#undef dispatch_notify
#endif