LINUX.ORG.RU

История изменений

Исправление bga_, (текущая версия) :

Весь SO забит этим вопросом
https://stackoverflow.com/questions/53887316/how-do-i-print-a-constant-value-... вот например. В основном делают неимплементированный шаблон PrintMe<вычисляемая_константа> и gcc ругается на PrintMe<123>. Или спавнять ворнинг так чтобы gcc вывел число. Был фокус со struct { int v:-positiveConst } что даст ошибку со значением константы
Вот еще норм вариант для си https://stackoverflow.com/a/35261673


>>> cat aa.c
enum { constExpr = 12 * 23 };

int main() {
	char (*__kaboom)[constExpr] = 1;
	void kaboom_print( void ) {
		printf("%d", __kaboom);
	}
	kaboom_print();
	return 0;
}


>>> gcc -Wformat aa.c
...
aa.c:9:12: warning: format '%d' expects argument of type 'int', but argument 2 has type 'char (*)[276]' [-Wformat=]
   printf("%d", __kaboom);                                                                                         
>>> gcc --version
gcc (GCC) 6.3.0  


>>> iccstm8 aa.c 
...
"R:\p\static_print\aa.c",7  Error[Pe144]: a value of type "int" cannot be used 
          to initialize an entity of type "char (*)[276]"                      

Исправление bga_, :

Весь SO забит этим вопросом
https://stackoverflow.com/questions/53887316/how-do-i-print-a-constant-value-... вот например. В основном делают неимплементированный шаблон PrintMe<вычисляемая_константа> и gcc ругается на PrintMe<123>. Или спавнять ворнинг так чтобы gcc вывел число. Был фокус со struct { int v:-positiveConst } что даст ошибку со значением константы
Вот еще норм вариант для си https://stackoverflow.com/a/35261673


>>> cat aa.c
enum { constExpr = 12 * 23 };

int main() {
	char (*__kaboom)[constExpr] = 1;
	void kaboom_print( void ) {
		printf("%d", __kaboom);
	}
	kaboom_print();
	return 0;
}


>>> gcc -Wformat aa.c
...
aa.c:9:12: warning: format '%d' expects argument of type 'int', but argument 2 has type 'char (*)[276]' [-Wformat=]
   printf("%d", __kaboom);                                                                                         
>>> gcc --version
gcc (GCC) 6.3.0  

Исправление bga_, :

Весь SO забит этим вопросом
https://stackoverflow.com/questions/53887316/how-do-i-print-a-constant-value-... вот например. В основном делают неимплементированный шаблон PrintMe<вычисляемая_константа> и gcc ругается на PrintMe<123>. Или спавнять ворнинг так чтобы gcc вывел число. Был фокус со struct { int v:-positiveConst } что даст ошибку со значением константы
Вот еще норм вариант для си https://stackoverflow.com/a/35261673

Исходная версия bga_, :

Весь SO забит этим вопросом
https://stackoverflow.com/questions/53887316/how-do-i-print-a-constant-value-... вот например. В основном делают неимплементированный шаблон PrintMe<вычисляемая_константа> и gcc ругается на PrintMe<123>. Или спавнять ворнинг так чтобы gcc вывел число. Был фокус со struct { int v:-positiveConst } что даст ошибку со значением константы