Мне интересно, возможно ли использовать определение предварительной обработки C для изменения спецификатора формата строки.Я попытался написать следующее, но, похоже, получаю ошибку компилятора.Он просто пытается заменить существующие спецификаторы формата правильными.
#include <stdio.h>
//This is the problem line....
#define %d %llu
int main(int argc, char** argv){
unsigned long long int myInt = 0;
printf("myInt start value: %d", myInt++);
printf("myInt value=%d (that got incremented)", myInt++);
printf("myInt value: %d; wow, another post-increment", myInt++);
printf("myInt final value %d", myInt);
return 0;
}
Я получаю следующую ошибку компилятора:
error: expected an identifier
#define %d %llu
^
Почему этот синтаксис неприемлем?Возможно ли это сделать?