error C2137 空字元常量

2021-07-01 22:31:28 字數 605 閱讀 7685

如果在c**中定義乙個字元,並且用空字元''(即單引號之間不包含任何內容),那麼編譯器就會報c2137的錯誤。

char ch = '';//ch被初始化為空字元常量
那為什麼c裡面不能有空字元常量呢?這是因為空字元常量不符合c89中對character constant的定義,下面是c89中對character constant定義的截圖:

可以看到,在syntax中對character-constant的定義中,單引號之間必須有c-char-sequence。

做為比較,下面來看一下c89中對字串常量,也就是string literal的定義:

可以看到,在syntax中對string-literal的定義中,雙引號之間的內容是可選的(由下標opt表示),因此,我們在c語言中就可以進行如下初始化:

char *str = "";

專案開發(ZZNUOJ)2137

題目描述 眾所周知,由於一些專案經理不是技術出身,專案經理經常和開發不在同乙個頻道上。於是就提出了一些比較 讓人難以接收的需求。比如,要求把標誌做成五彩斑斕的顏色,或者要求把主題顏色做成和手機外套一樣的顏色。深圳某 公司的一位專案經理就被開發給打了。現在呢,你是一位很慘的開發,專案經理給你提出了很多...

error c2678解決方法

使用ue4時發生 error c2678 binary no operator found which takes a left hand operand of type const hudmessage or there is no acceptable conversion 最後可以定位到這裡 ...

Error C2061 語法錯誤

這就是報錯資訊,明明已經進行了標識,但編譯就還是會出錯。更奇葩的是,自定義函式中本就乙個引數,但卻說該函式不接受乙個引數,很是無語。折騰了一陣子終於找到了問題的所在。這是因為標頭檔案進行了巢狀,使得編譯器重定義標示符,重複包含標頭檔案,而導致這樣了編譯錯誤 如a標頭檔案包含了b標頭檔案,b標頭檔案又...