mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 08:42:40 +01:00 
			
		
		
		
	Allow debug prints without __VA_ARGS__
__VA_ARGS__ are frustrating in C. Even for their main purpose (printf), they fall short in that they don't have a _portable_ way to have zero arguments after the format string in a printf call. Even if we detect compilers and use ##__VA_ARGS__ where available, GCC emits a warning with -pedantic that is _impossible_ to explicitly disable. This commit contains the best solution we can think of. A bit of indirection that adds a hidden "%s" % "" to the end of the format string. This solution does not work everywhere as it has a runtime cost, but it is hopefully ok for debug statements.
This commit is contained in:
		
				
					committed by
					
						 Christopher Haster
						Christopher Haster
					
				
			
			
				
	
			
			
			
						parent
						
							6b65737715
						
					
				
				
					commit
					6372f515fe
				
			
							
								
								
									
										28
									
								
								lfs_util.h
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								lfs_util.h
									
									
									
									
									
								
							| @@ -50,31 +50,35 @@ extern "C" | |||||||
|  |  | ||||||
| // Logging functions | // Logging functions | ||||||
| #ifdef LFS_YES_TRACE | #ifdef LFS_YES_TRACE | ||||||
| #define LFS_TRACE(fmt, ...) \ | #define LFS_TRACE_(fmt, ...) \ | ||||||
|     printf("lfs_trace:%d: " fmt "\n", __LINE__, __VA_ARGS__) |     printf("lfs_trace:%d: " fmt "%s\n", __LINE__, __VA_ARGS__) | ||||||
|  | #define LFS_TRACE(...) LFS_TRACE_(__VA_ARGS__, "") | ||||||
| #else | #else | ||||||
| #define LFS_TRACE(fmt, ...) | #define LFS_TRACE(...) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #ifndef LFS_NO_DEBUG | #ifndef LFS_NO_DEBUG | ||||||
| #define LFS_DEBUG(fmt, ...) \ | #define LFS_DEBUG_(fmt, ...) \ | ||||||
|     printf("lfs_debug:%d: " fmt "\n", __LINE__, __VA_ARGS__) |     printf("lfs_debug:%d: " fmt "%s\n", __LINE__, __VA_ARGS__) | ||||||
|  | #define LFS_DEBUG(...) LFS_DEBUG_(__VA_ARGS__, "") | ||||||
| #else | #else | ||||||
| #define LFS_DEBUG(fmt, ...) | #define LFS_DEBUG(...) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #ifndef LFS_NO_WARN | #ifndef LFS_NO_WARN | ||||||
| #define LFS_WARN(fmt, ...) \ | #define LFS_WARN_(fmt, ...) \ | ||||||
|     printf("lfs_warn:%d: " fmt "\n", __LINE__, __VA_ARGS__) |     printf("lfs_warn:%d: " fmt "%s\n", __LINE__, __VA_ARGS__) | ||||||
|  | #define LFS_WARN(...) LFS_WARN_(__VA_ARGS__, "") | ||||||
| #else | #else | ||||||
| #define LFS_WARN(fmt, ...) | #define LFS_WARN(...) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #ifndef LFS_NO_ERROR | #ifndef LFS_NO_ERROR | ||||||
| #define LFS_ERROR(fmt, ...) \ | #define LFS_ERROR_(fmt, ...) \ | ||||||
|     printf("lfs_error:%d: " fmt "\n", __LINE__, __VA_ARGS__) |     printf("lfs_error:%d: " fmt "%s\n", __LINE__, __VA_ARGS__) | ||||||
|  | #define LFS_ERROR(...) LFS_ERROR_(__VA_ARGS__, "") | ||||||
| #else | #else | ||||||
| #define LFS_ERROR(fmt, ...) | #define LFS_ERROR(...) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| // Runtime assertions | // Runtime assertions | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user