2017-02-26 3 views
0

Ich bin mit dem folgenden C++ Code mit der gcc-Compiler-Sammlung Cygwin:Asterisk Präzision Spezifikation arbeitet nicht mit Cygwin

void WINAPI debugEnterFunction(LPCSTR pszFunction, LPCSTR pszSrcFile, int nLineNo) 
{ 
char szFunction[128]; 
sprintf(szFunction, "%.*s\t%s:%d\r\n", 124 - lstrlen(pszSrcFile) - log10(nLineNo), pszFunction, pszSrcFile, nLineNo); 
// More code goes here. 
} 

Das Programm stürzt ab, während die sprintf-Anweisung zum ersten Mal ausgeführt wird, wo das Argument für die entsprechenden Die Sternchenangabe ist 108. Wenn ich die Länge der szFunction von 128 auf 1028 ändere, stürzt sie immer noch ab. Wenn ich die Anweisung sprintf folgendermaßen ändere:

dann funktioniert es gut.

Gibt es irgendwelche Probleme oder Probleme im Zusammenhang mit der Verwendung der Stern-Präzisionsspezifikation mit der Cygwin gcc Compiler-Sammlung? Laut der GNU-Website sollte die Sternspezifikationsspezifikation korrekt funktionieren.

Antwort

0

Hoppla, macht nichts; Ich habe es herausgefunden.

Ich hatte die Sprint-Anweisung

sprintf(szFunction, "%.*s\t%s:%d\r\n", 124 - lstrlen(pszSrcFile) - (int) log10(nLineNo), pszFunction, pszSrcFile, nLineNo); 
zu ändern