2017-01-31 126 views
2

有沒有什麼辦法讓在運行時在C代碼的源代碼行數? 它背後的想法是,假設一個軟件是用純C語言編寫的。 .exe文件分發給誰知道任何有關C.現在,如果有任何錯誤,用戶,用戶可以看到該行號和錯誤報告給製造商,以便調試可以在製造商的網站來完成。我只是在運行時調試運行時錯誤並在源代碼中獲取相應的行號。我是這些東西的初學者。有沒有辦法在運行時用C代碼獲取源代碼行號?

+0

是不是不夠好編譯調試符號和運行代碼在調試器像gdb? –

+0

這是一個可以解答你的具體問題的模塊。但正如第一條評論指出的那樣,更好的調試方式是使用調試器。 – kaylum

+0

我在運行時詢問行號。你能解釋一下嗎?我是編碼初學者 –

回答

2

改爲使用gdb。但我想它會工作:

if(someThingsWrong()) 
    printf("wrong at line number %d in file %s\n", __LINE__, __FILE__); 
3

如果您正在使用的GCC編譯器,你可以使用標準的預定義宏 - __LINE__作爲行號佔位符。

編譯器將填補行號在編譯時。

如: -

printf("%d",__LINE__);

+1

'__LINE__'宏不是特定於GCC的。 –

2

您可以使用內置的宏__LINE____FILE__,它總是擴展到當前文件名和行號。

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    if(argc<2) 
    { 
     printf("Error: invalid arguments (%s:%d)\n", __FILE__, __LINE__); 
     return 0; 
    } 
    printf("You said: %s\n", argv[1]); 
    return 0; 
} 
+1

'__FILE__'和'__LINE__'是,與一些其他一起,其實強制性宏。參見C11§6.10.8.11。 –

相關問題