zoukankan      html  css  js  c++  java
  • Delphi的参数修饰const/var/output 与C++的对应关系

    delphi的const/input和默认的没有修饰, C++都是一样的

    delphi的var,对应C++那边是指针,  调用方需要管理内存(负责分配内存及销毁)

            delphi的output , 对应c++那边也是指针 , 如果是 C++调用Delphi DLL, 而Delphi有个形参是out修饰的话, C++调用方传入的指针可以不需要初始化, 因为初始化已经在dll那边完成了. 

        

           比如delphi的dll:

    1.  
      function _PLCReadHoldingRegister(const RegNo: word; out Value: word): boolean; stdcall;
    2.  
      begin
    3.  
      Result := False;
    4.  
      if not checkClient then
    5.  
      exit;
    6.  
      g_lock.Enter;
    7.  
      try
    8.  
      Result := g_client.ReadHoldingRegister(RegNo, Value);
    9.  
      SendDebugFmt('_PLCReadHoldingRegister, regNr:%d,val:%d',[RegNo,Value]);
    10.  
      finally
    11.  
      g_lock.Leave;
    12.  
      end;
    13.  
      end;

    C++那边应该这样定义
    1.  
      typedef bool(__stdcall* _msrPLCReadHoldingRegister) (WORD,WORD&);
    2.  
      ...
    3.  
      WORD lvVal = 0;
    4.  
      if (mRoutines->PLCReadHoldingRegister(30, lvVal)) {
    5.  
      printf(lvVal ...);
    6.  
      }


    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rocklee/article/details/72356555
  • 相关阅读:
    代理模式
    面向对象设计原则
    砝码破碎
    阿里EasyExcel使用
    IBM的OpenJ9
    java反射 (复习)
    DecimalFormat保留小数
    Object类
    SQLMAP用法
    SQL盲注之时间注入
  • 原文地址:https://www.cnblogs.com/findumars/p/9360934.html
Copyright © 2011-2022 走看看