Thomas W. wrote:
> Wie bekomme ich denn dieses übersetzt:
>
1 | > #define HERE "Entering " __PRETTY_FUNCTION__ "()"
|
2 | > printf(HERE);
|
3 | >
|
> printf() soll durch jede andere Funktion die einen String ausgibt
> ersetzt werden können.
Seit gcc 3.4 ist _PRETTY_FUNCTION_ kein string literal mehr sondern
expandiert zu einer Variable, darum geht das mit der string
Konkatenation nicht. Du brauchst so etwas wie das hier:
1 | const char *my_here(const char *h)
|
2 | {
|
3 | static char buf[40];
|
4 | snprintf(buf,sizeof(buf),"Entering %s()\n",h);
|
5 | return buf;
|
6 | }
|
7 |
|
8 | #define HERE my_here(__PRETTY_FUNCTION__)
|
oder
1 | #define PRINT_HERE printf("Entering %s()\n",__PRETTY_FUNCTION__);
|