- препроцессор cpp . сравнение строк, phpcoder, 15:05 , 10-Июл-07 (1)
[...][c0der@rock ~]$ gcc -DCPU=PENTIUM opennet.c -o opennet opennet.c: В функции 'main' opennet.c:4: предупреждение: incompatible implicit declaration of built-in function 'printf' opennet.c:2: предупреждение: return type of 'main' is not 'int' [c0der@rock ~]$ ./opennet intel% [c5der@rock ~]$ rpm -q gcc4.1 gcc4.1-4.1.1-alt11 У меня, хоть и с варнингами, но работает.
- препроцессор cpp . сравнение строк, borey2005, 15:21 , 10-Июл-07 (2)
>[...] > >[c0der@rock ~]$ gcc -DCPU=PENTIUM opennet.c -o opennet >opennet.c: В функции 'main' >opennet.c:4: предупреждение: incompatible implicit declaration of built-in function 'printf' >opennet.c:2: предупреждение: return type of 'main' is not 'int' >[c0der@rock ~]$ ./opennet >intel% > > > > > > [c5der@rock ~]$ rpm -q >gcc4.1 >gcc4.1-4.1.1-alt11 > >У меня, хоть и с варнингами, но работает. Нет не рабоатет. Оно первую строку всегда вывожит. Поменяй на DCPU=ATHLON а ворнинги не изза препрцессора. #include <stdio.h> и return 1 в конец main диобавить пропадут они. PS вот тут подсказали что PENTIUM и ATHLON тож макросы были в старом коде , которые определялись как число и соответственно всё работало. Но всё равно думаю , нельзя что ли там строки использовать?
- препроцессор cpp . сравнение строк, jd, 20:09 , 10-Июл-07 (3)
>PS вот тут подсказали что PENTIUM и ATHLON тож макросы были в >старом коде , которые определялись как число и соответственно всё работало. > >Но всё равно думаю , нельзя что ли там строки использовать? А откуда вы взяли, что PENTIUM и ATHLON в данном случае - строки? С точки зрения C это ни разу не они. Если же опустить лирику, то более традиционно IMHO использование макросов примерно таким образом: #ifdef PENTIUM printf("intel"); #elif defined ATHLON printf("amd"); #elif #error "Unknown processor. You must define PENTIUM or ATHLON." #endif Ну и, соответственно, при компиляции: gcc -DINTEL test.c или gcc -DATHLON test.c Если строже (по-моему определение макроса без значения - это расширение gcc), то что-то вроде -DINTEL=1. Вот, как-то так.
- препроцессор cpp . сравнение строк, jd, 20:11 , 10-Июл-07 (4)
Опечатка: >#elif > #error "Unknown processor. You must define PENTIUM or ATHLON." тут конечно же не #elif, а #else.
|