2013-10-04 21 views
8

khi tôi muốn biên dịch tôi nhận được: Ưu tiên: dự kiến ​​không đủ tiêu chuẩn-id trước khi "return" return 0; về dòng cuối cùng: erreur: khai báo tóm tắt trước {tokenlỗi: dự kiến ​​không đủ tiêu chuẩn-id trước khi trở về trong C++

Tôi để mã không thay đổi chỉ phần giữa tôi đã thay đổi ... vấn đề là gì ??? đây là mã của tôi:


#include <iostream> 
using namespace std; 

int main() 
{ 
    cout << "Pensez a un personnage : Mlle Rose, le Professeur Violet, " 
     << "le Colonel Moutarde," << endl 
     << "le Reverend Olive ou Mme Leblanc." << endl << endl; 

    cout << "Votre personnage a-t-il des moustaches (1 : oui, 0 : non) ? "; 
    bool moustaches; 
    cin >> moustaches; 

    cout << "Votre personnage porte-t-il des lunettes ? "; 
    bool lunettes; 
    cin >> lunettes; 

    cout << "Votre personnage porte-t-il un chapeau ? "; 
    bool chapeau; 
    cin >> chapeau; 

    cout << "Est-ce que votre personnage est un homme ? "; 
    bool homme; 
    cin >> homme; 

    cout << "==> Le personnage auquel vous pensez est "; 

    if (chapeau) { 
    /******************************************* 
    * Completez le programme a partir d'ici. 
    *******************************************/ 
    cout << "le Professeur Violet"; 

    else if (moustaches) { 
     cout << "le Colonel Moutarde"; 
    } 
    else if (not lunettes) { 
     cout << "Mlle Rose"; 
    } 
    else if (homme) { 
     cout <<"le Révérend Olive"; 
    } 
    else { 
     cout <<"Mme Leblanc"; 
    } 

    /******************************************* 
    * Ne rien modifier apres cette ligne. 
    *******************************************/ 
    } 

    cout << endl; 

    return 0; 
} 


---------- 

Trả lời

8
if (chapeau) { 

Bạn quên nẹp kết thúc với tuyên bố if này, vì vậy tiếp theo else if được coi là một lỗi cú pháp. Bạn cần phải thêm cú đúp khi cơ thể if tuyên bố hoàn tất:

if (chapeau) { 
    cout << "le Professeur Violet"; 
} 
else if (moustaches) { 
    cout << "le Colonel Moutarde"; 
} 
// ... 
+0

thx nhưng tôi vẫn gặp lỗi tại 2 dòng cuối cùng: trả về 0; } id không đủ tiêu chuẩn dự kiến ​​trước lỗi trả lại: khai báo dự kiến ​​trước khi {token – user2774480

+0

kiểm tra câu trả lời của tôi, vấn đề của bạn là một trong các '}' của bạn bị thiếu vị trí. –

+0

@ user2774480 Dấu ngoặc kết thúc với câu lệnh 'if' ban đầu vẫn nằm ở cuối dòng' else if'. Vui lòng xóa điều đó và lỗi sẽ biến mất. – 0x499602D2

0

Bạn cần phải di chuyển "}" trước khi dòng cout << endl; vào dòng trước else đầu tiên.

0

Gợi ý:

  • sử dụng phù hợp thụt 3-4 không gian và bạn sẽ tìm thấy những vấn đề này dễ dàng hơn nhiều
  • sử dụng một phong cách cú đúp rằng dòng lên {} theo chiều dọc và bạn sẽ thấy những vấn đề này một cách nhanh chóng
  • luôn kiểm soát thụt lề các cấp khác
  • sử dụng trình chỉnh sửa đánh dấu cú pháp, nó sẽ giúp bạn sẽ cảm ơn tôi sau

ví dụ,

type 
functionname(arguments) 
{ 
    if (something) 
    { 
     do stuff 
    } 
    else 
    { 
     do other stuff 
    } 
    switch (value) 
    { 
     case 'a': 
      astuff 
      break; 
     case 'b': 
      bstuff 
      //fallthrough //always comment fallthrough as intentional 
     case 'c': 
      break; 
     default: //always consider default, and handle it explicitly 
      break; 
    } 
    while (the lights are on) 
    { 
     if (something happened) 
     { 
      run around in circles 
      if (you are scared) //yeah, much more than 3-4 levels of indent are too many! 
      { 
       scream and shout 
      } 
     } 
    } 
    return typevalue; //always return something, you'll thank me later 
} 
6

Chỉ vì lợi ích của những người hạ cánh ở đây với cùng lý do tôi đã làm:

Không sử dụng các từ khóa dành riêng

Tôi tên là một hàm trong lớp học của tôi Định nghĩa delete(), là một từ khóa dành riêng và không nên được sử dụng như một tên hàm. Đổi tên nó thành xóa() (cũng có ý nghĩa ngữ nghĩa trong trường hợp của tôi) đã giải quyết được vấn đề.

Đối với một danh sách các từ khóa dành riêng: http://en.cppreference.com/w/cpp/keyword

Tôi xin trích dẫn: "Kể từ khi chúng được sử dụng bởi các ngôn ngữ, các từ khóa này không có sẵn cho tái định nghĩa hoặc quá tải."

Các vấn đề liên quan