Ver Mensaje Individual
  #7  
Antiguo 16-04-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Revisa estos links

Error is " functions containing switch are not expanded inline

W8027: Functions containing 'statement' are not expanded inline

http://www.borlandtalk.com/w8027-fun...-vt108082.html

Basicamente el compilador te esta diciendo que no puede expandir la funcion, esto es, aprovechar cierta caracteristica que permite que una funcion, en lugar de compilarla una sola vez y cada vez que llamas a esa funcion, ir a ese unico lugar de todo tu programa en donde va a estar, se reemplazan las llamadas a la funcion esparcidas por tu codigo por la rutina de la funcion en si

No se entendio nada no?

Código Delphi [-]
unit FooUnit;

interface

  function Foo(x: integer): boolean; inline;

implementation
  function Foo(x: integer): boolean;
  begin
    Result := x > 10; 
  end;

Código Delphi [-]
unit Unit1;

interface

uses FooUnit;

interface
  function Bar: boolean;
  function Bar2: boolean;

implemetantion

  function Bar: boolean;
  begin
    Result := Foo(Random(5)); 
  end;

  function Bar2: boolean;
  begin
    Result := Foo(Random(8)); 
  end;

Al compilarlo esto se traduce en:

Código Delphi [-]
implemetantion

  function Bar: boolean;
  begin
    Result := Random(5) > 10; 
  end;

  function Bar: boolean;
  begin
    Result := Random(8) > 10; 
  end;


Esto evidentemente genera mas lineas de codigo, pero se gana performance ya que se evita el cambio de contexto que llamar a una funcion/procedimiento supone. Pero no siempre es posible, si la funcion es compleja o por ejemplo en un caso como el tuyo. Es una "sugerencia" al compilador (Ref)

Última edición por AgustinOrtu fecha: 16-04-2015 a las 17:06:15.
Responder Con Cita