TCHAR 型別匯出函式生成器

2021-07-07 08:04:51 字數 3013 閱讀 1109

texport(tchar export stub generator) 用於自動生成 tchar 型別程式的 char 和 wchar_t 型別的函式呼叫存根。

當在 windows 下開發程式庫時,使用 tchar 型別,比直接使用 char 和 wchar_t 具有更好的移植性。但是在編寫動態鏈結庫時,不能直接匯出 tchar 型別的函式,給 tchar 型別函式的使用帶來了一些限制。使用 texport 在 .h 檔案中加入特定的標記,texport 能自動生成類似於標準 sdk 不同字符集匯出函式的格式。給使用 tchar 型別編寫動態庫帶來一些便利。

程式的輸入檔案:

乙個使用 texport 規則標記過的 .h 檔案,乙個內建的或使用者指定的轉換規則檔案

程式的輸出檔案:

《輸入檔名》.tim.h

《輸入檔名》.tim.cpp

texport 執行時需要乙個轉換規則檔案,命名為:trans.txt,格式為:

需要轉換的變數型別, 轉換後的wchar版型別, 轉換後的char版型別

例: trans.txt

ptstr, pwstr, pstr

lptstr, lpwstr, lpstr

pctstr, pcwstr, pcstr

lpctstr, lpcwstr, lpcstr

/// test.h

#pragma once

#include

#include

#ifdef driverinstaller_exports

#define driverinstaller_api __declspec(dllexport)

#else

#define driverinstaller_api __declspec(dllimport)

#endif

void mystringlength(lpctstr pszstring);

//%

命令列執行:texport test.h

將輸出:

test.tim.h

test.tim.cpp

/// file test.tim.h

#pragma once

#include

#include

#ifdef driverinstaller_exports

#define driverinstaller_api __declspec(dllexport)

#else

#define driverinstaller_api __declspec(dllimport)

#endif

void mystringlength(lpctstr pszstring);

void installdriverw(lpcwstr pszinfpath);

void uninstalldriverw(lpcwstr pszhardwareid);

void installdrivera(lpcstr pszinfpath);

void uninstalldrivera(lpcstr pszhardwareid);

#ifdef _unicode

#define installdriver installdriverw

#define uninstalldriver uninstalldriverw

#else

#define installdriver installdrivera

#define uninstalldriver uninstalldrivera

#endif

//@begin test

#pragma once

#include

#include

#ifdef driverinstaller_exports

#define driverinstaller_api __declspec(dllexport)

#else

#define driverinstaller_api __declspec(dllimport)

#endif

void mystringlength(lpctstr pszstring);

void installdriverw(lpcwstr pszinfpath);

void uninstalldriverw(lpcwstr pszhardwareid);

void installdrivera(lpcstr pszinfpath);

void uninstalldrivera(lpcstr pszhardwareid);

#ifdef _unicode

#define installdriver installdriverw

#define uninstalldriver uninstalldriverw

#else

#define installdriver installdrivera

#define uninstalldriver uninstalldrivera

#endif

//@end

/// file test.tim.cpp

#include "stdafx.h"

#include

.h>

//@begin test

#include

.h>

void installdriverw(lpcwstr pszinfpath)

void uninstalldriverw(lpcwstr pszhardwareid)

void installdrivera(lpcstr pszinfpath)

void uninstalldrivera(lpcstr pszhardwareid)

//@end

python生成器函式 Python 生成器函式

一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...

生成器函式

pyhon優雅的魔力使生成器函式很特殊,它們像定格相機一樣工作。當乙個標準函式遇到return語句時,它會返回值,然後函式會丟棄內部的所有資料。當下次呼叫時,一切從頭開始。yield語句會做不同的事情。它像return一樣返回乙個值,但是它不會使函式丟棄資料,相反所有資料都被儲存起來。usr bin...

生成器函式

什麼是生成器 生成器是能夠動態提供資料的物件,生成器物件也是可迭代物件 例項 生成器有兩種 生成器函式 生成器表示式 生成器函式的呼叫將返回乙個生成器的物件,生成器物件是乙個可迭代物件 defmyyield 此函式為生成器函式 yield 2yield 3yield 5yield 7 此時生成乙個生...