Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        6年前关闭。
                                                                                            
                
        
我在示例C文件中看到了以下代码:

#define TEACHER_TABLE_LINE "| %-16s | %-50s |\n"

对C真的很陌生,但是在Google上并不成功,有人可以告诉我此功能是什么,以便我可以正确查找它吗?

(P.S.是的,我会尽快拿出一本好书(建议?),但此刻我需要尽快完成。)

最佳答案

它只是一个预处理器宏,用于定义预处理标识符TEACHER_TABLE_LINE,以便在源代码中将其替换为字符串"| %-16s | %-50s |\n"

弗伦C11, 6.10.3 Macro replacement /9


  形式如下的预处理指令:
  # define identifier replacement-list new-line
  定义了一个类似于对象的宏,该宏导致该宏名称的每个后续实例被构成该指令其余部分的预处理令牌的替换列表所替换。


从根本上讲,这意味着在代码的后面,类似以下语句:

printf (TEACHER_TABLE_LINE, teacherName, teacherAddress);


将被视为您已编写:

printf ("| %-16s | %-50s |\n", teacherName, teacherAddress);

10-06 04:53