IDiaSession::findLinesByLinenum
Kaynak dosyada belirtilen satır numarasının içinde veya yakınında yer alan compiland satır numaralarını belirler.
Sözdizimi
HRESULT findLinesByLinenum (
IDiaSymbol* compiland,
IDiaSourceFile* file,
DWORD linenum,
DWORD column,
IDiaEnumLineNumbers** ppResult
);
Parametreler
compiland
[in] Satır numaralarının arandığı compiland'ı temsil eden bir IDiaSymbol nesnesi. Bu parametre olamaz NULL
.
file
[in] Aranacak kaynak dosyayı temsil eden bir IDiaSourceFile nesnesi. Bu parametre olamaz NULL
.
linenum
[in] Tek tabanlı bir satır numarası belirtir.
Dekont
Tüm satırları belirtmek için sıfır kullanamazsınız (tüm satırları bulmak için IDiaSession::findLines yöntemini kullanın).
column
[in] Sütun numarasını belirtir. Tüm sütunları belirtmek için sıfır kullanın. Sütun, bir satıra bayt uzaklığıdır.
ppResult
[out] Alınan satır numaralarının listesini içeren bir IDiaEnumLineNumbers objta döndürür.
İade Değeri
Başarılı olursa döndürür S_OK
; aksi takdirde bir hata kodu döndürür.
Örnek
Aşağıdaki örnekte bir kaynak dosyanın nasıl açıldığı, bu dosyanın katkıda bulunduğu compiland'ların nasıl numaralandırıldığı ve her bir compiland'ın başladığı kaynak dosyada satır numaralarının nasıl bulunacağı gösterilmektedir.
void ShowLinesInCompilands(IDiaSession *pSession, LPCOLESTR filename)
{
IDiaEnumSourceFiles* pEnum;
IDiaSourceFile* pFile;
DWORD celt;
pSession->findFile ( NULL, filename, nsFNameExt, &pEnum );
while ( pEnum->Next ( 1, &pFile, &celt ) == S_OK ) // for each file
{
IDiaEnumSymbols* pEnumCompilands;
IDiaSymbol* pCompiland;
pFile->get_compilands ( &pEnumCompilands );
// for each compiland
while ( pEnumCompilands->Next ( 1, &pCompiland, &celt ) == S_OK )
{
IDiaEnumLineNumbers* pEnum;
// Find first compiland closest to line 1 of the file.
if (pSession->findLinesByLinenum( pCompiland, pFile, 1, 0, &pEnum ) == S_OK)
{
IDiaLineNumber *pLineNumber;
DWORD lineCount;
while ( pEnum->Next(1,&pLineNumber,&lineCount) == S_OK)
{
DWORD lineNum;
if (pLineNumber->get_line(&lineNum) == S_OK)
{
printf("compiland starts in source at line number = %lu\n",lineNum);
}
}
}
}
}
}
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin