0

c++ のビジュアル スタジオ コードfmtライブラリに問題があります。ライブラリは機能しますが、書き込み時にインテリセンスがfmt/os.hヘッダーの関数を表示/入力しません。その理由は、os.h ヘッダーのこれらの行です。

私はwin10とmingw g ++を使用しており、下部に私のtasks.jsonがあります

#if (FMT_HAS_INCLUDE(<fcntl.h>) || defined(__APPLE__) || \
     defined(__linux__)) &&                              \
    (!defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP))
#  include <fcntl.h>  // for O_RDONLY
#  define FMT_USE_FCNTL 1
#else
#  define FMT_USE_FCNTL 0
#endif

そのため、#define FMT_USE_FCNTL 0 を指定すると、ヘッダーの一部が intellisense によって認識されなくなります (149 行目でヘッダーの一部が「コメント化」されます)。全くの初心者なので何が何だかわかりません。これは、fmt をビルドするときに cmake でフラグを立てることができるものですか、それとも何ですか? 私にとって奇妙なことは、すべてがうまく機能しているように見えることです fmt::output_file などは機能しますが、インテリセンスはそれらの機能を認識しません。これをグーグルで調べてみましたが、知識が限られているため、どこに問題があるのか​​さえわかりません。

また、たとえば、以下の fmt github のサンプル コードは実行されますが、output_file コマンドを自動入力できず、名前空間 "fmt" にメンバー "output_file" がないというエラーが output_file 関数で表示されます。

#include <fmt/os.h>

int main() {
  auto out = fmt::output_file("guide.txt");
  out.print("Don't {}", "Panic");
}
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "build",
            "command": "g++.exe",
            "args": [
                "-Wall",
                "-g",
                "-std=c++2a",
                "${file}",
                "${fileDirname}\\src\\*.cpp",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                // fmt includes and links
                "-I",
                "C:\\Users\\user\\Documents\\1links\\Git\\Git\\cpp_libs\\fmt\\include",
                "-I",
                "C:\\Users\\user\\Documents\\1links\\Git\\Git\\cpp_libs\\fmt\\src",
                "C:\\Users\\user\\Documents\\1links\\Git\\Git\\cpp_libs\\fmt\\Build\\libfmt.a",
                // library files needed to make the libraries work
            ],
            "options": {
                "cwd": "C:/MinGW/mingw32/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

また、ここに私の c_cpp_properties.json があります

{
    "configurations": [
        {
            "name": "Mingw",
            "includePath": [
                "${default}",
                "C:\\Users\\user\\Documents\\1links\\Git\\Git\\cpp_libs\\fmt\\include"
            ],
            "windowsSdkVersion": "10.0.18362.0",
            "compilerPath": "C:\\MinGW\\bin\\g++.exe",
            "cStandard": "c17",
            "cppStandard": "c++20",
            "intelliSenseMode": "gcc-x86"
        }
    ],
    "version": 4
}

お時間をいただきありがとうございます。

4

0 に答える 0