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 + -
显示快捷键?