簡體   English   中英

在CI中,編譯時收到“錯誤:')'標記之前的預期表達式”

[英]In C I am getting an “error: expected expression before ')' token” on compile

我猜這將是一個非常明顯且簡單的解決方案。

int is_full() {
  return (top == STACK_SIZE);
}

問題可能是“ STACK_SIZE”是在編譯時聲明的宏,只需輸入-DSTACK_SIZE = 10。 那十個可以是別的東西。 我不確定如何處理,或者不確定是否正確,還是需要在程序中聲明。

我認為您正在使用Makefile中的宏。 我假設這是在STACK_SIZE =>前面的-D

-DSTACK_SIZE=10 我還假設您使用的是gcc之類的內容,因為例如Visual Studio使用\\D定義宏。 如上所見,這種定義宏的方法是不可移植的。

宏也可以在代碼中定義。 在這種情況下,您需要寫

#define STACK_SIZE (10)

而不使用'='符號。 這種方法是可移植的,順便說一句,當您必須根據配置更改值時,通常首選第一種形式,因為它不需要更改代碼。 在任何情況下,如果

-DSTACK_SIZE = 10在Makefile中未正確聲明,因此,如果您選擇使用Makefile定義,則需要通過發布類似以下內容的奇怪錯誤來保護代碼:

#ifndef STACK_SIZE
    /* handle with a default value o with the macro #error */
#else
    return (top == STACK_SIZE);
#endif

顯然,在您的情況下,您在Makefile上犯了一些錯誤,實際上未定義STACK_SIZE並獲得了return(==); 您可以按照上述說明簡單地避免(或管理)錯誤。

您認為正在定義STACK_SIZE,但未定義。

編譯器看到:

int is_full() {
  return (top == );
}

弄清楚為什么#define沒有通過。

暫無
暫無

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

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