2

これが何度も尋ねられた場合は申し訳ありませんがこのCコードの何が問題なのかわかりません.9行目と10行目で「C2009:イニシャライザは定数ではありません」と不平を言い始めるまで問題なくコンパイルされていたからです。このヘッダーの:

// CONIO2.H
#ifndef CONIO2_H_INCLUDED
#define CONIO2_H_INCLUDED
#ifndef _WINDOWS_
#include <windows.h>
#endif

void clrscr(void) {
    int Written = 0;
    COORD ord;
    ord.X = 0;
    ord.Y = 0;
    FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), 32, 80 * 25, ord, &Written);
}

//MAIN.C
#include <stdio.h>
#include <conio2.h>

編集:エラーが見つかりました。C アプリケーションの開発に Eclipse CDT プラグインを使用していましたが、パスが正しく設定されていませんでした。私はそれを機能させるために構成をいじる必要がありましたが、とにかくありがとう!

4

3 に答える 3

1
COORD ord;

COORDタイプ エイリアスの定義がありません。私の推測では、正しいヘッダーが含まれていません。Wincon.h

COORDタイプ エイリアス を使用するための要件 (含めるヘッダー) については、 http: //msdn.microsoft.com/en-us/library/windows/desktop/ms682119 (v=vs.85).aspx を参照してください。

編集:さらに、#ifndefディレクティブに問題があるようです:ヘッダーには2つ#ifndefしかありません。#endifそれぞれ#ifndefに が必要です#endif。が定義されていないwindows.h場合にのみ含めますか?_WINDOWS_

于 2012-05-09T18:53:22.580 に答える
0

このリンクでは、いくつかの例とともにエラーについて説明しています。それはあなたを助けるかもしれません。リンクに従って、コンパイラはプログラムの開始時に非自動変数を初期化し、それらが初期化される値は定数でなければなりません。http://msdn.microsoft.com/en-us/library/t801az8a(v=vs.80).aspx

于 2012-05-09T18:45:42.513 に答える
0

あなたのコードには、いくつかのプリプロセッサの奇妙な点があります。以下のコードは、Windows 用の標準C コンパイラでうまく機能します。VC++ は標準の C コンパイラではないため、あらゆる種類の奇妙なエラーが発生する可能性があることに注意してください。

// CONIO2.H
#ifndef CONIO2_H_INCLUDED
#define CONIO2_H_INCLUDED

#include <windows.h>

void clrscr (void) 
{
  DWORD Written = 0;
  COORD ord;
  ord.X = 0;
  ord.Y = 0;
  FillConsoleOutputCharacter (GetStdHandle(STD_OUTPUT_HANDLE), 
                              32, 
                              80 * 25, 
                              ord, 
                              &Written);
}

#endif /* CONIO2_H_INCLUDED */

//MAIN.C

#include <stdio.h>
#include "conio2.h"
于 2012-05-09T20:08:23.383 に答える