我目前正在移植一些Windows代码,并试图使其在Ubuntu中可用。该项目最初是用VC++编译的,没有任何问题。我还要注意,这仅需要在Ubuntu中工作,但是当然欢迎更多与平台无关的想法。
大多数代码很容易移植,因为它主要是一个数值仿真项目,几乎没有OS特定的部分。移植版本中没有使用UNICODE,也不需要任何支持。
我想知道在尝试使此代码与GCC一起编译时的最佳做法是什么,尤其是:
什么被认为是__int64,_tmain和_TCHAR *的最佳替代品?
谢谢!
最佳答案
对于64位:
#include <inttypes.h>
typedef int64_t __int64;
至于TCHAR问题。实际上,我发现TCHAR非常有用,因此我有一个包含所有_t函数的文件。
例如
#ifdef UNICODE
#define _tcslen wcslen
#define _tcscpy wcscpy
#define _tcscpy_s wcscpy_s
#define _tcsncpy wcsncpy
#define _tcsncpy_s wcsncpy_s
#define _tcscat wcscat
#define _tcscat_s wcscat_s
#define _tcsupr wcsupr
#define _tcsupr_s wcsupr_s
#define _tcslwr wcslwr
#define _tcslwr_s wcslwr_s
#define _stprintf_s swprintf_s
#define _stprintf swprintf
#define _tprintf wprintf
#define _vstprintf_s vswprintf_s
#define _vstprintf vswprintf
#define _tscanf wscanf
#define TCHAR wchar_t
#else
#define _tcslen strlen
#define _tcscpy strcpy
#define _tcscpy_s strcpy_s
#define _tcsncpy strncpy
#define _tcsncpy_s strncpy_s
#define _tcscat strcat
#define _tcscat_s strcat_s
#define _tcsupr strupr
#define _tcsupr_s strupr_s
#define _tcslwr strlwr
#define _tcslwr_s strlwr_s
#define _stprintf_s sprintf_s
#define _stprintf sprintf
#define _tprintf printf
#define _vstprintf_s vsprintf_s
#define _vstprintf vsprintf
#define _tscanf scanf
#define TCHAR char
#endif
至于_s函数基本上...我实现了它们。完成编码大约需要一个小时,但是这使得将项目移植到其他平台或编译器非常容易。
关于c++ - 移植Windows代码,用什么代替__int64 _tmain和_TCHAR *?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3108220/