1. 程式人生 > >C語言中的__FILE__、__LINE__和#line用法

C語言中的__FILE__、__LINE__和#line用法

C語言中的__FILE__用以指示本行語句所在原始檔的檔案。

例如:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. printf("%s\n",__FILE__);
  5. }
在gcc編譯生成a.out,執行後輸出結果為: test.c 在windows的VS2013下編譯執行結果為: d:\work\c&c++\project\project1\project1\main.cpp -------------------------------------------------------------------------------------------------------------------------------------------------- C語言中的__LINE__用以指示本行語句在原始檔中的位置資訊
,舉例如下:
  1. #include <stdio.h>
  2. main()
  3. {
  4. printf("%d\n",__LINE__);
  5. printf("%d\n",__LINE__);
  6. printf("%d\n",__LINE__);
  7. };
該程式在linux用gcc編譯,在windows的VS2013下編譯都可以通過,執行結果都為: 7 8 9 還可以通過語句#line來重新設定__LINE__的值,舉例如下:
  1. #include <stdio.h>
  2. #line 200  //指定下一行的__LINE__為200
  3. main()
  4. {
  5. printf("%d\n",__LINE__);
  6. printf("%d\n",__LINE__);
  7. printf("%d\n",__LINE__);
  8. };
編譯執行後輸出結果為: 202 203 204 --------------------------------------------------------------------------------------------------------------------------------------------------------- 另外gcc還支援__func__,它指示所在的函式,但是這個關鍵字不被windows下的vc6.0支援,舉例如下:
  1. #include <stdio.h>
  2. void main()
  3. {
  4. printf("this is print by function %s\n",__func__);
  5. }
其編譯後輸出結果為 this is print by function main

注意: “#line”、 “__LINE__”、 “__FILE__" 及 “__func__" 都是大小寫敏感的。