assert.hrl
来自「OTP是开放电信平台的简称」· HRL 代码 · 共 81 行
HRL
81 行
%% ``The contents of this file are subject to the Erlang Public License,%% Version 1.1, (the "License"); you may not use this file except in%% compliance with the License. You should have received a copy of the%% Erlang Public License along with this software. If not, it can be%% retrieved via the world wide web at http://www.erlang.org/.%% %% Software distributed under the License is distributed on an "AS IS"%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See%% the License for the specific language governing rights and limitations%% under the License.%% %% The Initial Developer of the Original Code is Ericsson Utvecklings AB.%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings%% AB. All Rights Reserved.''%% %% $Id$%%%%% Purpose : Assert macro%% ?ASSERT/2 - will simply return true if the first argument evaluates to true%% otherwise it will exit and output (via the error logger) the%% second string%%%% Arguments:%% Flag Expression that should evalueate to true or false%% String String to return as a part of the exit reason as well%% be to be sent to the error logger.%%%% Returns:%% true If the Flag expression evaluates to true%% %% Exits:%% {'EXIT', {assertion_failed, String}}%% If the Flag expression evaluates to something other than%% true.%%%% Usage notes:%% Please note that the Flag argument must be a valid expression that %% evaluates to true.%%%% Also, avoid any side effects in the Flag, as everything performed%% within the scope of the ?ASSERT macro will not be present when%% the code is not compiled with the debug_on flag.%%%% Side effects include the binding of a variable, sending of a%% message, etc.%%-ifdef(debug_on).-define(ASSERT(Flag, String), case Flag of true -> true; _ -> S2 = lists:flatten( io_lib:format( "=ASSERT====~nPid:~p, Module:~p, Line:~p~nTermination because assertion failed:~n~p", [self(),?MODULE, ?LINE,String])), error_logger:error_report(S2), exit({assertion_failed, String}) end ).-define(ALWAYS_ASSERT(String), S2 = lists:flatten( io_lib:format( "=ASSERT====~nPid:~p, Module:~p, Line:~p~nTermination because of unconditional assert:~n~p", [self(),?MODULE, ?LINE, String])), error_logger:error_report(S2), exit({always_assert, String}) ).-else.-define(ASSERT(_Flag,_String), true).-define(ALWAYS_ASSERT(_String), true).-endif.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?