C的enum與Delphi中列舉的轉換問題

2021-09-17 08:31:37 字數 576 閱讀 7018

當delphi呼叫乙個來自c的介面時,比如dll。c中的函式引數可能是列舉型別,由於delphi預設列舉長度為2位元組、c為4位元組,則將會在呼叫時產生意外,因此需要解決該問題:

delphi中的列舉定義示例如下,這裡以對接openssl的point_conversion_form_t型別為例:

type tpoint_conversion_form = (point_conversion_compressed=2,

point_conversion_uncompressed=4,

point_conversion_hybrid=6);

此時若呼叫ec_point_point2hex將會出錯,錯誤提示傳入的form有問題,此時我們需要修改delphi這頭的定義:

type tpoint_conversion_form = (point_conversion_compressed=2,

point_conversion_uncompressed=4,

point_conversion_hybrid=6);

此時將強制delphi列舉長度為4位元組,與c一致。

本**在win64上測試通過。

C 學習之旅(13) 列舉enum

所謂列舉,作用就是列出一堆數值的集合,然後規定某個變數只能從集合中取值。例如,拋乙個骰子,取值只能是1,2,3,4,5,6 交通燈的顏色,只能是red,blue和yellow。enum dice enum light 在賦值的時候,只要賦了第乙個值,後面的就會自動遞增。定義列舉型別的變數如下 inc...

C與C 中的enum型別使用

1.enum常量與enum變數 對於enum型別,定義enum時在 中定義的屬於enum常量,這些量不可以被更改,同時可以在程式中任意地方宣告乙個enum變數,但enum變數必須用enum常量進行賦值。enum myenum enum enumvar first enum變數用enum常量進行賦值初...

C (102) 列舉型別與位域列舉Enum

定義乙個值型別,其中包含固定值集合。列舉型別變數可以是此集合中的任意乙個或多個值。列舉使用enum關鍵字來宣告,與類同級。列舉本身可以有修飾符,但列舉的成員始終是公共的,不能有訪問修飾符。列舉本身的修飾符僅能使用public和internal。顯式指定列舉的底層資料型別,如果沒有明確指定底層資料型別...