Compiler

A collection of 2 posts
C

func(void):C 與 C++ 函式宣告的小差異

最近編譯遇到一個錯誤訊息 warning: function declaration isn’t a prototype,程式碼大概是像這樣: hello.h 1 2 3 4 void foo() {     printf("Hello World!\n"); } hello.c 1 2 3 4 5 int main(int argc, char**argv) {     foo();     return0; } 這樣的程式碼應該再單純不過了,怎麼會說我的函式宣告(Declaration)並不為一個原型(Prototype)呢? 深入了解 ANSI C 才知道原來這與語言的發展史有關。 函式的宣告(Declaration)、原型(Prototype)
4 min read
clang

Clang 入門教程 - 解析 C 語言程式

在前幾天的文章中有稍微提到 LLVM ,今天則是要介紹從 LLVM 延伸出來的子計畫(subproject):Clang。 這個教程其實是參考"How to parse C programs with clang: A tutorial in 9 parts.“,那你可能會好奇說我這樣做不就是把它翻譯過來而已?不是的,因為 Clang API 快速的更動,兩年多前的程式碼早已不敷使用,所以範例程式的參考價值已經大不如前,於是我決定把範例程式重寫,這也就是此篇文章誕生的原因。 開始之前 你必須先編譯好所需要的 LLVM & Clang 函式庫,步驟可以參考這裡。因為此篇文章所用到了 LLVM 以及 Clang 版本為 r124522,如果讓程式保證可以執行,請在所有 svn checkout 的網址後面加上"@124522″,如: svn
7 min read