Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: magnetron - 17 Temmuz 2022, 21:33:31

Başlık: #define satırında bunu yapmak mümkün mü ?
Gönderen: magnetron - 17 Temmuz 2022, 21:33:31
merhaba forum

AFI(void) diye bir fonksiyonum var bu PARAM1 değişkeni ile bir işlem yapıyor

bu fonksiyonu

#define AF(X) PARAM1 = (X);AFI();

satırıyla parametre gönderip çağırabilir miyim ?
yani #define satırındaki bu ifadeler doğru mu ?

AF(10) yazdığımda

PARAM1 = (10);AFI();

komut satırı çağırılsın istiyorum

GCC hata vermedi ama ben mantık olarak doğrumuyum sormak istedim

böyle bir şey çok kullanışlı olur bence

teşekkür

Başlık: Ynt: #define satırında bunu yapmak mümkün mü ?
Gönderen: magnetron - 17 Temmuz 2022, 22:47:49
yok çalışmadı (ama derlerken hata vermedi )

; noktalı virgüller #define satırını bitiriyor anladığım kadar

bunu yapmanın bir yolu var mı ?
Başlık: Ynt: #define satırında bunu yapmak mümkün mü ?
Gönderen: mehmet - 17 Temmuz 2022, 22:59:18
{} parantezlerini kullanın.

#define AF(X) {PARAM1 = (X);AFI();}
Başlık: Ynt: #define satırında bunu yapmak mümkün mü ?
Gönderen: ahmet35 - 17 Temmuz 2022, 23:21:10
Ben #define AF(X) do { çalışacak kod } while(0) kullanmayı tercih ediyorum.
Başlık: Ynt: #define satırında bunu yapmak mümkün mü ?
Gönderen: foseydon - 18 Temmuz 2022, 00:21:32
sen mantik olarak cok yanlis yoldasin :D.
Başlık: Ynt: #define satırında bunu yapmak mümkün mü ?
Gönderen: ziyaretci - 19 Temmuz 2022, 07:51:39
Hazır konuyu görmüşken sormak istiyorum; bir dosya dizinini define edebiliyor muyuz?

Bir ara denemiştim ama becerememiştim.
Kastım;
#define proje_yolu "C:\proje"
#include <proje_yolu\xyz.c>

Derleyici CCS C

Örnek verebilirseniz memnun olurum.

Başlık: Ynt: #define satırında bunu yapmak mümkün mü ?
Gönderen: mehmet - 19 Temmuz 2022, 18:45:29
Tanıtıcı sözcük yerine, tanımlanmış
ne varsa aktarılır. Standart C 'ye
özgü bir temel özelliktir.

https://www.kadifeli.com/fedon/stdcprtr.php?6_1#:~:text=%23define

Ek:
/*
 * test_01.c
 * https://stackoverflow.com/questions/2410976/how-to-define-a-string-literal-in-gcc-command-line#2411008
 */
#include <stdint.h>
#include <stdio.h>

#define STRINGIZE(x) #x
#define STRINGIZE_VALUE_OF(x) STRINGIZE(x)

int main(void)
{
    printf("%s\n\r", STRINGIZE_VALUE_OF(isim));
return 0;
}

Alttaki şekilde derlendiğinde «isim» yerine "Mehmet"
yazacaktır.
gcc test_01.c -o test_01 -Disim='Mehmet'
Başlık: Ynt: #define satırında bunu yapmak mümkün mü ?
Gönderen: Tagli - 19 Temmuz 2022, 20:52:47
Çok satırlı makrolarda işin doğrusu @ahmet35 'in dediği şekilde yapmaktır.
Başlık: Ynt: #define satırında bunu yapmak mümkün mü ?
Gönderen: mehmet - 19 Temmuz 2022, 21:16:38
/*
 * test_01.c
 * https://stackoverflow.com/questions/2410976/how-to-define-a-string-literal-in-gcc-command-line#2411008
 */
#include <stdint.h>
#include <stdio.h>

#define STRINGIZE(x) #x
#define STRINGIZE_VALUE_OF(x) STRINGIZE(x)

#define yaz() { printf("%s\n\r", STRINGIZE_VALUE_OF(isim1));\
                 printf("%s\n\r", STRINGIZE_VALUE_OF(isim2));\
                 printf("%s\n\r", STRINGIZE_VALUE_OF(isim3));\
              }

int main(void)
{
     yaz()
    return 0;
}

gcc test_01.c -o test_01 -Disim1='Ali' -Disim2='Veli' -Disim3='Selami'