簡體   English   中英

初始化程序不是恆定錯誤

[英]Initializer is not a constant error

抱歉,是否已經一遍又一遍地詢問了這個問題,但是我只是不明白此C代碼有什么問題,因為直到有一天它開始編譯時都沒有問題,它開始在第9行和第10行中抱怨“ C2009:Initializer不是常量”此標頭的:

// 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>

編輯:我發現了錯誤。 我使用Eclipse CDT插件開發C應用程序,但未正確設置路徑。 我必須使用配置才能使其正常工作,但是無論如何,謝謝!

COORD ord;

您缺少COORD類型別名的定義。 我的猜測是您沒有包括正確的標題: Wincon.h

請參閱此處以了解使用COORD類型別名的要求(包括的標題): http : //msdn.microsoft.com/zh-cn/library/windows/desktop/ms682119( COORD ) .aspx

編輯 :此外,您的#ifndef指令似乎有問題:標頭中有兩個#ifndef但只有一個#endif 對於每個#ifndef您都需要一個#endif 並且確定只在未定義_WINDOWS_時才要包含windows.h嗎?

該鏈接描述了錯誤以及一些示例。 它可能會幫助您。 按照鏈接,編譯器在程序開始時初始化非自動變量,並且使用它們初始化的值必須恆定。 http://msdn.microsoft.com/en-us/library/t801az8a(v=vs.80).aspx

您的代碼有幾個預處理器異常。 以下代碼在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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM