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
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ı ?
{} parantezlerini kullanın.
#define AF(X) {PARAM1 = (X);AFI();}
Ben #define AF(X) do { çalışacak kod } while(0) kullanmayı tercih ediyorum.
sen mantik olarak cok yanlis yoldasin :D.
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.
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'
Çok satırlı makrolarda işin doğrusu
@ahmet35 'in dediği şekilde yapmaktır.
/*
* 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'