函数模板的简单问题。
cu_test.cpp
#include <stdio.h>#include <stdlib.h>#include <string.h>#include "cu_test.h"static int test_cnt=0;static int err_cnt=0;template<typename T>void cu_test(const T test,const T correct, char *const file_name,const int line_cnt){ if(test!=correct) { const char *str=file_name+strlen(file_name); while(*str!='\\') { str--; } str++; printf("%s的第%d行错误!\n",str,line_cnt); err_cnt++; } test_cnt++;}template<>void cu_test<const char*>(const char *test,const char *correct, char const *file_name,const int line_cnt){ if(strcmp(test,correct)!=0) { const char *str=file_name+strlen(file_name); while(*str!='\\') { str--; } str++; printf("%s | line %d error!\n",str,line_cnt); err_cnt++; } test_cnt++;}#ifndef _CU_TEST_H_#define _CU_TEST_H_template<typename T>void cu_test(T test,T correct,const char* file_name,const int line_cnt);template<>void cu_test<const char*>(const char *test,const char *correct, const char *file_name,const int line_cnt);#define CU_TEST(test,correct) cu_test(test,correct,__FILE__,__LINE__)extern void CU_INFO();#endif
#include <stdio.h>#include <stdlib.h>#include "cu_test.h"int main(){ unsigned short a=1; unsigned short b=2; CU_TEST(a,b); system("pause"); return 0;}