Revision: 9290 https://osdn.net/projects/ttssh2/scm/svn/commits/9290 Author: zmatsuo Date: 2021-05-27 23:15:44 +0900 (Thu, 27 May 2021) Log Message: ----------- MinGWドキュメントでTLS + LoadLibrary() で問題あるOSが誤っていたので修正 - Visual Studio の printf()系の C99準拠について追記 Modified Paths: -------------- trunk/teraterm/libmingw/README.md trunk/teraterm/libmingw/README_w95.md -------------- next part -------------- Modified: trunk/teraterm/libmingw/README.md =================================================================== --- trunk/teraterm/libmingw/README.md 2021-05-27 14:15:25 UTC (rev 9289) +++ trunk/teraterm/libmingw/README.md 2021-05-27 14:15:44 UTC (rev 9290) @@ -20,12 +20,14 @@ - "%zd" など新しいフォーマット指定子 - 古い Visual Studio(msvcrt.dll) の printf()系ではサポートしていない - L"%s" と "%s" の動作の違い - - msvcrtでは %s は char, L"%s" は wchar_t + - msvcrtでは "%s" は char, L"%s" は wchar_t を引数とする + - MinGWでは "%s", L"%s" とも char, "%ls" は wchar_t を引数とする - 特に指定していないと MinGW の printf()系(stdio)を使用する - このため Visual Studio と動作が異なってしまう - `__USE_MINGW_ANSI_STDIO` マクロので切り替えることができる - - 1 のとき mingw の stdio (デフォルト) + - 1 のとき mingw の stdio (mingwのデフォルト) - 0 のとき msvcrt - 参考URL - [printf の %lf について](https://ja.stackoverflow.com/questions/34013/printf-%E3%81%AE-lf-%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6) - +- Visual Studio 2015 以降 + - `_CRT_STDIO_ISO_WIDE_SPECIFIERS` を使用すると C99 に準拠するらしい Modified: trunk/teraterm/libmingw/README_w95.md =================================================================== --- trunk/teraterm/libmingw/README_w95.md 2021-05-27 14:15:25 UTC (rev 9289) +++ trunk/teraterm/libmingw/README_w95.md 2021-05-27 14:15:44 UTC (rev 9290) @@ -63,7 +63,7 @@ - GCC では __thread - LoadLibrary()で使用するdll(Tera Termの場合、プラグイン)では利用で問題があった - exe と同時にロードするdllはok - - Windows 7以降からok + - Windows Vista / Server 2008 以降からok、それ以前では問題がある - [スレッド固有記憶領域を持つ DLLを LoadLibrary すると異常動作する問題](http://seclan.dll.jp/dtdiary/2011/dt20110818.htm) - Windowsではexe(PE32)内.tlsセクションを利用して、スレッドローカル変数の処理を行う - スレッドコールバックテーブル