簡體   English   中英

編譯C程序時出錯

[英]Error when compiling C program

我正在嘗試完成一個涉及使用信號量的學校項目。 我已經包含了正確的頭文件(為pthreads添加了一個)。 我已經將編譯器也指向了正確的庫。 這是用C語言編寫的。是的,這是一個分配,但是請注意,我不是在尋求實現方面的幫助,而是似乎無法弄清楚這個令人討厭的編譯錯誤。

這是我的代碼的第47至50行,它們是信號量的“簡單”聲明並對其進行初始化:

sem_t empty;
sem_init(&empty, 0, 5); 
sem_t full;
sem_init(&full, 0, 0); 

這是我嘗試為第48行進行編譯時收到的消息。為第50行獲得了相同的集合,但為簡潔起見沒有發布:

|48|error: expected declaration specifiers or ‘...’ before ‘&’ token|
|48|error: expected declaration specifiers or ‘...’ before numeric constant|
|48|error: expected declaration specifiers or ‘...’ before numeric constant|
|48|warning: data definition has no type or storage class|
|48|warning: type defaults to ‘int’ in declaration of ‘sem_init’|

我已經在main()函數之外聲明了所有這些。 我該如何解決這些錯誤? 我很困惑,因為它似乎沒有指示sem_t的數據類型,但是它在semaphore.h中定義,我已經將其包括在內。 我正在使用gcc的Ubuntu下的Code :: Blocks對此進行編譯。 即使從命令行進行編譯,也會發生此錯誤。

先謝謝您的幫助。

我認為您的問題可能與范圍界定有關。

“我已經在main()函數之外聲明了所有這些”

聽起來很可疑,因為我可以看到您在聲明之后立即調用了一個函數。

嘗試將調用移至main內部的sem_init

您可以在文件范圍內聲明內容(即在main之外,有效地創建全局變量),但不能在文件范圍內調用函數(如sem_init )。 必須在函數范圍內調用它們(例如,在main()內部)

暫無
暫無

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

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