給未來的裕翔
寫一個簡單的main.c
#include <stdio.h>
#include <string.h>
int main(void)
{
printf("\n%d\n",strlen("12345"));
return 0;
}
因為有#include <string.h>
所以編譯器會自動去/usr/include找string.h
如果改成#include "string.h"
編譯器會include./string.h
由於不存在
所以編譯器會改成去/usr/include找
如果從/usr/include複製一個string.h到./
把./string.h裡面的strlen定義改成sstrlen
編譯馬上出錯
表示對#include "string.h"來說, ./優先於/usr/include
如果在./新增資料夾include
把有錯的./string.h移到./include裡面
再次編譯, 會過, 表示對#include "string.h"來說
./找不到的話, 依舊去/usr/include搜尋
那如果在main.c裡面寫成#include "include/string.h"
或是編譯時指明inlcude位置, ex: gcc main.c -Iinclude
編譯會錯, 得知確實有找到./include/string.h
以上
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment