1. 程式人生 > >C語言中_FILE_, _LINE, _func_的解釋!

C語言中_FILE_, _LINE, _func_的解釋!

C語言中的__FILE__用以指示本行語句所在原始檔的檔名,舉例如下(test.c):

  1. #include <stdio.h>
  2. int main()
  3. {
  4. printf("%s\n",__FILE__);
  5. }

在gcc編譯生成a.out,執行後輸出結果為:

test.c

在windows的vc6.0下編譯執行結果為:

c:\documents and settings\administrator\桌面\test.c

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

C語言中的__LINE__用以指示本行語句在原始檔中的位置資訊,舉例如下:

 

  1. #include <stdio.h>
  2.  
  3.  
  4.  
  5. main()
  6. {
  7. printf("%d\n",__LINE__);
  8. printf("%d\n",__LINE__);
  9. printf("%d\n",__LINE__);
  10. };

該程式在linux用gcc編譯,在windows的vc6.0下編譯都可以通過,執行結果都為:

7

8

9

還可以通過語句#line來重新設定__LINE__的值,舉例如下:

  1. #include <stdio.h>
  2.  
  3.  
  4. #line 200  //指定下一行的__LINE__為200
  5. main()
  6. {
  7. printf("%d\n",__LINE__);
  8. printf("%d\n",__LINE__);
  9. printf("%d\n",__LINE__);
  10. };

編譯執行後輸出結果為:

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__" 都是大小寫敏感的