2013-10-24 18 views
9

Vì một số lý do tôi nhận được thông báo lỗi sau khi biên dịch chương trình .c.Biên dịch tệp .C: Biểu tượng không xác định cho kiến ​​trúc x86_64

11 cảnh báo được tạo. ký Không xác định cho kiến ​​trúc x86_64: "_main", tham chiếu từ: entry ngầm/bắt đầu cho chính thực thi ld: biểu tượng (s) không tìm thấy cho kiến ​​trúc x86_64 kêu vang: lỗi: lệnh mối liên kết thất bại với mã exit 1 (sử dụng - v để xem invocation)

date.c của tôi:

#include "date.h" 
#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 

struct date { 
    char *day; 
    char *month; 
    char *year; 
}; 

/* 
* date_create creates a Date structure from `datestr` 
* `datestr' is expected to be of the form "dd/mm/yyyy" 
* returns pointer to Date structure if successful, 
*   NULL if not (syntax error) 
*/ 
Date *date_create(char *datestr) { 
    Date *d = (Date *)malloc(sizeof(Date)); 
    const char delimiter[2] = "/"; 
    char *token; 

    if (d != NULL) { 
    token = strtok(datestr, delimiter); 
    d->day = *token; 
    token = strtok(NULL, delimiter); 
    d->month = *token; 
    token = strtok(NULL, delimiter); 
    d->year = *token; 
    } 
}; 

/* 
* date_duplicate creates a duplicate of `d' 
* returns pointer to new Date structure if successful, 
*   NULL if not (memory allocation failure) 
*/ 
Date *date_duplicate(Date *d) { 
    return NULL; 
}; 

/* 
* date_compare compares two dates, returning <0, 0, >0 if 
* date1<date2, date1==date2, date1>date2, respectively 
*/ 
int date_compare(Date *date1, Date *date2) { 
    return 0; 
}; 

/* 
* date_destroy returns any storage associated with `d' to the system 
*/ 
void date_destroy(Date *d) { 

}; 

Bash đầu ra:

bash-3.2$ gcc -W -Wall date.c 
date.c:25:12: warning: incompatible integer to pointer conversion assigning to 
     'char *' from 'char'; remove * [-Wint-conversion] 
    d->day = *token; 
     ^~~~~~~ 
date.c:27:14: warning: incompatible integer to pointer conversion assigning to 
     'char *' from 'char'; remove * [-Wint-conversion] 
    d->month = *token; 
      ^~~~~~~ 
date.c:29:13: warning: incompatible integer to pointer conversion assigning to 
     'char *' from 'char'; remove * [-Wint-conversion] 
    d->year = *token; 
      ^~~~~~~ 
date.c:37:44: warning: format specifies type 'void *' but the argument has type 
     'char' [-Wformat] 
    printf("Day: %p Month: %p Year: %p\n", *d->day, *d->month, *d->year); 
       ~~      ^~~~~~~ 
       %c 
date.c:37:53: warning: format specifies type 'void *' but the argument has type 
     'char' [-Wformat] 
    printf("Day: %p Month: %p Year: %p\n", *d->day, *d->month, *d->year); 
          ~~      ^~~~~~~~~ 
          %c 
date.c:37:64: warning: format specifies type 'void *' but the argument has type 
     'char' [-Wformat] 
    printf("Day: %p Month: %p Year: %p\n", *d->day, *d->month, *d->year); 
            ~~       ^~~~~~~~ 
            %c 
date.c:40:1: warning: control reaches end of non-void function [-Wreturn-type] 
}; 
^ 
date.c:47:28: warning: unused parameter 'd' [-Wunused-parameter] 
Date *date_duplicate(Date *d) { 
         ^
date.c:55:24: warning: unused parameter 'date1' [-Wunused-parameter] 
int date_compare(Date *date1, Date *date2) { 
        ^
date.c:55:37: warning: unused parameter 'date2' [-Wunused-parameter] 
int date_compare(Date *date1, Date *date2) { 
            ^
date.c:62:25: warning: unused parameter 'd' [-Wunused-parameter] 
void date_destroy(Date *d) { 
         ^
11 warnings generated. 
Undefined symbols for architecture x86_64: 
    "_main", referenced from: 
    implicit entry/start for main executable 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
+0

bạn cũng có thể muốn khắc phục những cảnh báo về việc dẫn xuất thừa và sử dụng% c cho ký tự thay vì% p – user1937198

+0

Điều đó tôi đã xóa khỏi mã. Dù sao cũng cảm ơn bạn. – chuckfinley

Trả lời

13

Bạn cần mộtChức năngtrong date.c. Hoặc bạn chỉ có thể biên dịch với -c để không liên kết tại thời điểm này và liên kết chức năng chính sau này.

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