2014年12月23日 星期二

ld: warning: cannot find entry symbol _start;

如題,今天compile一個東西,只想compile他的lib而不是整個daemon,

所以就下了 make XXXlib 這樣的指令,

實際執行起來大概像是  /usr/bin/ld hello.c -o hello.o 這樣的東西

就跑出了如標題這樣的錯誤,雖然只是一個warning 但是根本可以看做一個error,因為位置

根本全部都錯亂,所以下面一定跑出一堆undefined reference,

研究了許久

終於發現要在後面加上 -lc



/usr/bin/ld hello.c -o hello.o -lc

-lc 代表要跟compiler 說使用標準的C 函式庫

這樣終於可以過了 -.-


2014年12月15日 星期一

C++中函式輸入泛型並型態轉換為enum / In C++ function generic parameter casting to enum / casting void* to enum


在C++中不能直接cast成 enum 但在C 中可以
如以下source code 在C中可以COMPILE過 
情況類似此篇文章 typdef enum void* 的用法請益

typedef enum {
     enum1
     enum2,
     enum3}
myenum;
void myfunc(void *data)
{
    if((myenum)data==enum1)
      ...
    else if ((myenum)data==enum2)
     ...
    else
     ...
}