[英]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.