写宏遇到的问题:warning: backslash and newline separated by space - C

本文介绍了一种使用C预处理宏进行调试的方法,并通过一个具体示例展示了如何利用宏输出文件名、行号及函数名等信息,帮助开发者快速定位问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/liyongming1982/article/details/6663031

原来是因为\ 后面多了一个空格

   附上一个刚刚写得调试用的例子:

[cpp]  view plain copy
  1. #define desay_debug(_string,myValue) \  
  2.     do{\  
  3.          c_snprintf(desay_info, \  
  4.                   250 - 1, \  
  5.                   "\ndesay: File: %s  Line#: %d  Func: %s()\n !!!:message is %s value is %d\n", \  
  6.                   __FILE__, \  
  7.                   __LINE__, \  
  8.                   __func__, \  
  9.                   _string, \  
  10.                   myValue); \  
  11.         desayEvent.ui4_msg_id=DESAY_MESSAGE_ID;\  
  12.         desayEvent.ui4_data1=(UINT32)&desay_info[0];\  
  13.         a_am_get_app_handle_from_name(&h_app_desay,"homepage");\  
  14.         c_app_send_msg(h_app_desay,0,&desayEvent,sizeof(DESAY_MSG_T),NULL,NULL);\  
  15.     }while(0)  
linux在编译的时候出现以下问题: CC minidlna.o In file included from minidlna.h:48:0, from minidlna.c:50: sql.h:42:14: error: unknown type name 'sqlite3' int sql_exec(sqlite3 *db, const char *fmt, ...); ^~~~~~~ sql.h:43:19: error: unknown type name 'sqlite3' int sql_get_table(sqlite3 *db, const char *zSql, char ***pazResult, int *pnRow, int *pnColumn); ^~~~~~~ sql.h:44:23: error: unknown type name 'sqlite3' int sql_get_int_field(sqlite3 *db, const char *fmt, ...); ^~~~~~~ sql.h:45:29: error: unknown type name 'sqlite3' int64_t sql_get_int64_field(sqlite3 *db, const char *fmt, ...); ^~~~~~~ sql.h:46:27: error: unknown type name 'sqlite3' char * sql_get_text_field(sqlite3 *db, const char *fmt, ...); ^~~~~~~ sql.h:47:16: error: unknown type name 'sqlite3' int db_upgrade(sqlite3 *db); ^~~~~~~ In file included from minidlna.c:50:0: minidlna.h:72:3: warning: #warning "Your SQLite3 library appears to be too old! Please use 3.5.1 or newer." [-Wcpp] # warning "Your SQLite3 library appears to be too old! Please use 3.5.1 or newer." ^~~~~~~ minidlna.h:104:13: error: unknown type name 'sqlite3' int open_db(sqlite3 **sq3); ^~~~~~~ minidlna.h:117:15: error: unknown type name 'sqlite3' void check_db(sqlite3 *db, int new_db); ^~~~~~~ In file included from minidlna.c:52:0: upnpglobalvars.h:191:40: warning: backslash and newline separated by space "http-get:*:audio/x-monkeys-audio:*," \ upnpglobalvars.h:247:8: error: unknown type name 'sqlite3' extern sqlite3 *db; ^~~~~~~ minidlna.c: In function 'init': minidlna.c:1014:2: warning: statement with no effect [-Wunused-value] for (failnums; failnums < 10; failnums++) ^~~ minidlna.c: In function 'main': minidlna.c:1377:6: error: implicit declaration of function 'sqlite3_libversion_number' [-Werror=implicit-function-declaration] if (sqlite3_libversion_number() < 3005001) ^~~~~~~~~~~~~~~~~~~~~~~~~ minidlna.c:1567:20: error: implicit declaration of function 'sqlite3_total_changes'; did you mean 'sqlite3_threadsafe'? [-Werror=implicit-function-declaration] if (scanning || sqlite3_total_changes(db) != last_changecnt) ^~~~~~~~~~~~~~~~~~~~~ sqlite3_threadsafe minidlna.c: In function 'minidlnaStart': minidlna.c:1674:2: error: implicit declaration of function 'sqlite3_initialize'; did you mean 'sqlite3_malloc'? [-Werror=implicit-function-declaration] sqlite3_initialize(); ^~~~~~~~~~~~~~~~~~ sqlite3_malloc minidlna.c: In function 'minidlnaShutdown': minidlna.c:1818:8: error: implicit declaration of function 'sqlite3_close'; did you mean 'sqlite3_malloc'? [-Werror=implicit-function-declaration] ret = sqlite3_close(db); ^~~~~~~~~~~~~ sqlite3_malloc minidlna.c:1819:6: error: 'SQLITE_OK' undeclared (first use in this function) if (SQLITE_OK != ret) ^~~~~~~~~ minidlna.c:1819:6: note: each undeclared identifier is reported only once for each function it appears in minidlna.c:1826:8: error: implicit declaration of function 'sqlite3_shutdown'; did you mean 'sqlite3_malloc'? [-Werror=implicit-function-declaration] ret = sqlite3_shutdown(); ^~~~~~~~~~~~~~~~ sqlite3_malloc minidlna.c: At top level: minidlna.c:1851:13: error: unknown type name 'sqlite3' int open_db(sqlite3 **sq3) ^~~~~~~ minidlna.c:1917:15: error: unknown type name 'sqlite3' void check_db(sqlite3 *db, int new_db) ^~~~~~~ minidlna.c: In function 'minidlna_startScannerThread': minidlna.c:2067:8: error: implicit declaration of function 'open_db'; did you mean 'opendir'? [-Werror=implicit-function-declaration] ret = open_db(NULL); ^~~~~~~ opendir minidlna.c:2095:14: error: implicit declaration of function 'sql_get_int_field' [-Werror=implicit-function-declaration] updateID = sql_get_int_field(db, "SELECT VALUE from SETTINGS where KEY = 'UPDATE_ID'"); ^~~~~~~~~~~~~~~~~ minidlna.c:2103:2: error: implicit declaration of function 'check_db' [-Werror=implicit-function-declaration] check_db(db, ret); ^~~~~~~~ At top level: minidlna.c:193:12: warning: 'l_rescanFlag' defined but not used [-Wunused-variable] static int l_rescanFlag = 0;
最新发布
08-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值