Visual Studio バージョンアップ

アバター
いわん
記事: 30
登録日時: 8年前

Visual Studio バージョンアップ

投稿記事 by いわん » 2年前

Visual Studio 2019 をインストールして古いプロジェクトの移行作業してて、2点ほど問題発生。

1.下のコードでエラーになる。

CODE:

_stscanf_s(text, _T("%d %[^\x00]"), &n, buf, (unsigned)_countof(buf));

"warning C4778: 'swscanf_s' : 書式文字列 '%[^' がありません"
テキストからスペースも含めて文字列最後まで取り出すのにnull以外を検索しようとしているのだが、%[^ がいかんらしい?
仕方ないので、下のようにコード範囲指定にして回避。

CODE:

_stscanf_s(text, _T("%d %[\x01-\xff"), &n, buf, (unsigned)_countof(buf));
2.フィルターフォルダが無くなった。
一部のプロジェクトのフィルターフォルダが無くなってしまって、全部のファイルがルートに表示されて見づらくなってしまった。
こちらは別にエラーになるわけではないので取り敢えずほっとくことにしたけど・・・ やっぱり見づらい(-_-;)
フィルターフォルダ.png
どこいった?
フィルターフォルダ.png (26.23 KiB) 閲覧数: 1192 回

いつもながら Microsoft はバージョンアップがすんなりとはいかないなぁ。

アバター
みけCAT
記事: 6734
登録日時: 13年前

Re: Visual Studio バージョンアップ

投稿記事 by みけCAT » 2年前

いわん さんが書きました:
2年前
1.下のコードでエラーになる。

CODE:

_stscanf_s(text, _T("%d %[^\x00]"), &n, buf, (unsigned)_countof(buf));

"warning C4778: 'swscanf_s' : 書式文字列 '%[^' がありません"
テキストからスペースも含めて文字列最後まで取り出すのにnull以外を検索しようとしているのだが、%[^ がいかんらしい?
仕方ないので、下のようにコード範囲指定にして回避。

CODE:

_stscanf_s(text, _T("%d %[\x01-\xff"), &n, buf, (unsigned)_countof(buf));
ナル文字は文字列の終端なので、

CODE:

_T("%d %[^\x00]")
は実質

CODE:

_T("%d %[^")
として扱われ、[ に対応する ] が無いのでまずいのかな…

と見せかけて、

CODE:

_T("%d %[\x01-\xff")
についても [ に対応する ] が無いが、これはいいのか…
そもそも、移行したときの問題とのことなので、前者も他のバージョンでは動いていたのか…

不思議ですなあ…

アバター
いわん
記事: 30
登録日時: 8年前

Re: Visual Studio バージョンアップ

投稿記事 by いわん » 2年前

みけCAT さんが書きました: ナル文字は文字列の終端なので、

CODE:

_T("%d %[^\x00]")
は実質

CODE:

_T("%d %[^")
として扱われ、[ に対応する ] が無いのでまずいのかな…
なるほど、終端とみなされて後ろが評価されないということですね。
みけCAT さんが書きました:

CODE:

_T("%d %[\x01-\xff")
についても [ に対応する ] が無いが、これはいいのか…
そもそも、移行したときの問題とのことなので、前者も他のバージョンでは動いていたのか…
あ、コピペで持ってくるのが面倒臭くて直接書き込んだ時にミスしたようです。
実際のコードにはちゃんと ] があります。
前のバージョンではエラーにならなったんですよね。言語仕様の解釈が変わったとかかな。