問題タブ [cl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - コンパイラ間の正規表現の代替順序の違い
入力検証のために C++ で ECMA スクリプト構文を使用していますが、コンパイラを変更するときに問題が発生しました。代替を使用する場合、残りの正規表現によって不適格とされない限り、一致する左から最初の式を使用する必要があります。したがって、文字列"abcde"
の場合、式"ab?|ab?(?:cd|dc)"
は一致する必要があり"ab"
ます。さまざまなコンパイラーがそれについてさまざまな意見を持っていることがわかりました。
MCVE:
オンライン: ideone (gcc 5.1) cpp.sh (gcc 4.9.2) rextester
私は得ることを期待します
|アブ|
|アブ|
|abcd|
|abcd|
|abcd|
|abcd|
これは、Visual Studio 2013、gcc 5.1 ( ideone )、および clang ( rextester ) には当てはまりますが、gcc 4.9 (ローカルの ubuntu およびcpp.sh ) には当てはまりません。
|abcd|
それらの3つすべてのために。
私の質問:
- 標準に関する限り、交代が左から右に読み取られるという私の仮定は間違っていますか?
- gcc 4.9 は壊れていて、gcc 5 で修正されているようです。実際のプロジェクトでは CUDA を使用しているため、gcc 4.9 を使い続ける必要があります。gcc 4.9 で標準規約を使用する方法はありますか (正規表現を書き換える以外に) ?
c - C - 文字列の可変長配列を関数に渡し、関数内の文字列を変更する
更新:ここには本質的に2つの問題があります:
- 関数内で文字列の配列を渡し、それらにアクセスする方法。(これはIs 2d array a double pointer?によって解決されます。
- 配列の長さが可変の場合にこれを行う方法。C99 準拠のコンパイラと Visual Studio MSVC コンパイラの使用。
ポイント2への答えは次のとおりです。
C99 準拠のコンパイラでは問題ありませんが、MSVC コンパイラでは現在、以下のように配列の長さを関数シグネチャのパラメータとして設定することはできません。
VS 2015 で機能させるために、ポインターをコピーし、ポインター演算を使用して手動で次の文字列にインクリメントしました。
空の C 文字列の配列を作成し、それらを関数に渡し、関数に文字列を入力させる正しい方法は何ですか?
私のユースケースでは、ファイルからいくつかの文字列を読み取り、それらを配列に入れたいと考えています。
関数内ReadItem
でファイルからテキストを正常に読み取りましたreadBuff
が、文字列をにコピーしようとするとstringOut
エラーが発生しますAccess violation writing location 0x00000000.
。
どうすればこれを機能させることができますか?
c++ - x64 を使用して cl を実行するにはどうすればよいですか?
私はここで致命的なエラーC1034と同じ問題を抱えていました: windows.h: インクルードパスが設定されていません
入力vcvars32.bat
して問題を解決しましたが、64ビットの.libファイルをリンクしたいのですが、リンクすると次のようになります。
私は得る:
vcvars32.bat
32ビットを使用しているからですか?64 ビット版はどこにありますか?
ありがとう
visual-studio-2015 - cl : コマンド ライン エラー D8022 : 'c:\users\admini~1\appdata\local\temp\tmpjbx8xe.lnk' を開けません
使用する Windows ビルド マシンをアップグレードしています
- Visual Studio 2015 Update 3
- scons 2.5.0
- msbuild 14.0.25420.1
から
- Visual Studio 2013 Update 4
- scons 2.3.4
- msbuild 12.0.31101
しかし、ビルドエラーが発生しています。「初期」実行中、ビルドは次の理由で失敗します
cl : コマンド ライン エラー D8022 : 'c:\users\admini~1\appdata\local\temp\tmpjbx8xe.lnk' を開けません
このようなエラーがいくつか発生する可能性があります。ファイルを見つけようとすると、それらが存在しないことに気付きます。
ビルドを再実行すると成功します。
他の誰かがこの問題に遭遇しましたか? 解決策はありますか?
参考までに: ビルドは 20 コアのマシンで並行して実行されます。これにより、タイミング条件が発生する可能性があります。しかし、以前の設定では問題ありませんでした。
更新: さらに調査した結果、これは SCons の問題である可能性があるようです。SCons が .lnk ファイルを作成しているようです。これらのファイルにリンク コマンド ラインを保存し、cl を介してそれらを実行します。
cl @c:\users\admini~1\appdata\local\temp\tmpjbx8xe.lnk
math - as400 CL スクリプト演算で 0 が返される
アルゴリズムで除算の剰余を計算しようとしています:
すべて整数で計算されます。
例: 15 / 6 の余りを取得します。
15/6 の余りは確かに 3 です。
私の問題は、CL スクリプトでこのアルゴリズムを使用すると、常に 0 が返されることです。何故ですか?
以下でコンパイル:
走る:
出力:
visual-studio - clang によって生成されたバイナリが Visual Studio によって生成されたバイナリよりも大きい理由
これは単なる "hello world" C++ コードの一部です。
私はclang 3.9でコードをコンパイルしました。コマンドは clang -m32 hello.cpp -o hello.exe で、ターゲットの実行可能サイズは約44kbです。コマンドに「O3」オプションを追加しても違いはありませんでした。
Visual Studio 2010 でコンパイルしましたが、対象の実行ファイルのサイズはリリース版でわずか6kb、デバッグ版で28kbしかありません。
2 つのバージョンのバイナリの違いを説明できる人はいますか。どんな助けでも大歓迎です。