pretty1.c
来自「linux下编程用 编译软件」· C语言 代码 · 共 68 行
C
68 行
// PR c++/6794// Test whether __PRETTY_FUNCTION__ works in templates, functions and// in initializers at global scope// { dg-do compile }// { dg-options "" }extern "C" void __assert_fail (const char *, const char *, unsigned int, const char *) throw() __attribute__((noreturn));extern "C" void abort (void);extern "C" void exit (int);#define str(expr) #expr#define assert(expr) \ ((expr) ? 0 : (__assert_fail (str(expr), __FILE__, __LINE__, \ __PRETTY_FUNCTION__), 0))int __attribute__((noinline))foo (void){ return 1;}template<class T> intbar (T){ return (assert (foo ()), 1);}template<> intbar<int> (int){ return (assert (foo ()), 2);}int a = (assert (foo ()), 1);int b = (assert (foo ()), 2);intmain (){ double c = 1.0; unsigned char *d = 0; int e = (assert (foo ()), 3); bar (c); bar (d); bar (e);}namespace N{ int f = (assert (foo ()), 4);}void __attribute__((noinline))__assert_fail (const char *cond, const char *file, unsigned int line, const char *pretty) throw (){ abort ();}// { dg-final { scan-assembler "int bar\\(T\\).*with T = int" } }// { dg-final { scan-assembler "top level" } }// { dg-final { scan-assembler "int main\\(\\)" } }// { dg-final { scan-assembler "int bar\\(T\\).*with T = double" } }// { dg-final { scan-assembler "int bar\\(T\\).*with T = unsigned char\*" } }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?