28

引数が適切であると確信していますが、Eclipse で無効な引数エラーが発生します。提案された引数には「?」が含まれています 問題を示している可能性がありますが、修正方法はわかりません。

ここで見た例をコピーするために最善を尽くしました:
http://www.cplusplus.com/reference/clibrary/cstring/memset/

私が引数を正しく取得していることを確認するために。

#include <stdio.h>
#include <string.h>
void foo()
{
    char str[] = "why oh why does my IDE give me errors when I know my args are good?";
    memset(str, '-', 4);
    puts(str);
}

Eclipse では、memset 行で次のエラーが表示されます。

無効な引数 ' 候補は次のとおりです: void * memset(void *, int, ?) '

何が原因でしょうか? そして、その '?' はどうしたのですか? 3番目の引数として?

前もって感謝します!

PS: malloc、calloc などの操作を使用しようとすると、同様のエラーが発生することに気付きました。

4

7 に答える 7

23

エクリプスでは:

  • プロジェクトを右クリック
  • プロパティをクリック
  • 矢印をクリックして、左側のツリー ビューの項目C/C++ generalを展開します (項目自体をクリックするだけでは、サブオプションは展開されません)。
  • サブオプションからプリプロセッサ インクルード パス、マクロなど」を選択します。
  • [プロバイダー]タブをクリックします
  • CDT GCC ビルトイン コンパイラ設定 [共有]にチェックを入れます。

編集:

これが機能する理由は、コンパイル時にコンパイラが暗黙のうちに追加するデフォルトのインクルードと定義がたくさんあるためです。これらの命令は、Eclipse がこれらのサイレント プリプロセッサ ディレクティブを取得して、独自のインデクサーが同じ設定を使用するようにします。

于 2014-06-18T16:36:53.973 に答える
1

I think it is something to do with your Eclipse setup, somehow.

Taken standalone, that fragment compiles under GCC (G++) 4.7.1 on Mac OS X 10.7.5 with the command line:

g++ -O3 -g -Wall -Wextra -c ms.cpp

The only surprising thing about the third argument to memset() is that it is of type size_t, but the headers are supposed to declare that, so it should not be an issue.

If you're using malloc() et al, you will be including <stdlib.h>, of course. There is also room to argue that you should be using <cstdio>, <cstring> and <cstdlib>, but that shouldn't stop the code you presented from compiling without error.

于 2012-10-23T03:27:46.300 に答える
1

Visual Studio を使用している場合、size_t は次のように定義されます。

typedef unsigned __int64    size_t;

以前のバージョンの Eclipse CDT では、__int64 は定義されていませんでした。C/C++ General -> Paths and Symbols -> Symbols に追加することで、この問題を修正できます。

  • シンボル: __int64
  • 値: long long

または、Eclipse CDT のバージョンをアップグレードできます

于 2013-12-19T19:19:00.647 に答える
0

Eclipse CDT でも同様の問題がありました。しかし、私の場合、using namespace std;ステートメントをいくつかのヘッダーに入れていました。そして、いくつかの条件の組み合わせで、このヘッダーをすべて含めたときに、Eclipse はそのような動作をしました。

于 2016-03-01T20:37:12.370 に答える
0

私は BeagleBone の開発にサード パーティの C++ ライブラリを使用しており、それを含めるあらゆる方法を試しました (プリプロセッサ インクルード、ソース フォルダー、アセンブリ インクルード、ライブラリ インクルード、C++ コンパイラ インクルード、C コンパイラ インクルードなど)。私が試みたすべての変更に対して、リフレッシュ、再インデックス、クリーン、およびビルドを行いました。プロジェクトを削除して、.cpp ファイルと .h ファイルだけを新しいプロジェクトにコピーしました。

最終的にセットアップで問題を発見し、次のように修正しました。

プロジェクトを右クリック > [プロパティ] > [C/C++ ビルド] > [ツールチェーン エディター] > [現在のビルダー]:> [ CDT 内部ビルダー] を選択します。

参考までに、g ++を使用しています。

于 2016-02-13T14:53:49.013 に答える