2012-04-02 31 views
6

Tôi nhận được thông báo lỗi ở trên (mà tôi đã tìm và tìm thấy có liên quan gì đó với dấu ngoặc nhọn bị thiếu).lỗi nghiêm trọng C1004: kết thúc bất ngờ của tập tin tìm thấy

#include "stdafx.h" 
#include <Windows.h> 
#include <iostream> 
using namespace std; 

    class Something{ 


     static DWORD WINAPI thread_func(LPVOID lpParameter) 
     { 
      thread_data *td = (thread_data*)lpParameter; 
      cout << "thread with id = " << td->m_id << endl; 
      return 0; 
     } 


     int main() 
     { 
      for (int i=0; i< 10; i++) 
      { 
       CreateThread(NULL, 0, thread_func, new thread_data(i) , 0, 0); 
      } 

      int a; 

      cin >> a; 
     } 

     struct thread_data 
     { 
      int m_id; 
      thread_data(int id) : m_id(id) {} 
     }; 

    } 
+0

Chỉ tò mò, tại sao 'main' được bọc trong một lớp học? – Mahesh

+0

Lấy ví dụ từ đây: http://stackoverflow.com/questions/4768294/multithreading-in-c – mezamorphic

+0

Tôi nghĩ nó phải được bọc trong một lớp học? – mezamorphic

Trả lời

21

Trong C++, các từ khóa class đòi hỏi một dấu chấm phẩy sau ngoặc đóng:

class Something { 

}; // <-- This semicolon character is missing in your code sample. 
+0

Cảm ơn vì điều đó! Nó bây giờ nói "lỗi nghiêm trọng LNK1120: 1 bên ngoài chưa được giải quyết" Im xin lỗi, tôi là một nhà phát triển Java! – mezamorphic

+1

@ user1107474 có nghĩa là, trình biên dịch có thể tìm thấy khai báo được cung cấp trong tệp tiêu đề (* .h) nhưng liên kết không thể tìm thấy định nghĩa. 'declaration - int Count();' <--- bạn có cái này ở đâu đó nhưng thiếu 'definition - int Count() {return 5; } ' –

2

Bạn cần một dấu chấm phẩy (;) sau ngoặc đóng (}) của định nghĩa class Something

+0

Cảm ơn, không cho rằng bạn biết vấn đề liên kết tôi nhận được ngay bây giờ? – mezamorphic

+1

Bạn có đang liên kết lại các thư viện WINAPI không? – Attila

5

Lớp học của bạn Something cần phải có dấu chấm phẩy chấm dứt.

class Something{ 

}; // missing 
Các vấn đề liên quan