The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"препроцессор cpp . сравнение строк"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"препроцессор cpp . сравнение строк"  
Сообщение от borey2005 email(ok) on 10-Июл-07, 14:58 
Привет
вот такая конструкция работала на каком то(не помню каком) gcc
# gcc -DCPU=PENTIUM test.c
cat test.c
void main(void)
{
#if CPU == PENTIUM
    printf("intel");
#elif CPU == ATHLON
    printf("amd");
#endif
}
и всё пучком.
на gcc4 то же самое не прокатывает. строки сравнивать не хочет. Судя по ману сравнивать можно только числовые параметры (xnj и подтверждается тестом), а строки как таким образом сравнить не подскажет ли кто?
Заранее спасибо.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "препроцессор cpp . сравнение строк"  
Сообщение от phpcoder email(??) on 10-Июл-07, 15:05 
[...]

[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

У меня, хоть и с варнингами, но работает.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "препроцессор cpp . сравнение строк"  
Сообщение от borey2005 email(ok) on 10-Июл-07, 15:21 
>[...]
>
>[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 тож макросы были в старом коде , которые определялись как число и соответственно всё работало.
Но всё равно думаю , нельзя что ли там строки использовать?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "препроцессор cpp . сравнение строк"  
Сообщение от jd (??) on 10-Июл-07, 20:09 
>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. Вот, как-то так.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "препроцессор cpp . сравнение строк"  
Сообщение от jd (??) on 10-Июл-07, 20:11 
Опечатка:
>#elif
>  #error "Unknown processor. You must define PENTIUM or ATHLON."
тут конечно же не #elif, а #else.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру