Alışılmadık kullanım .h C dosyasında
Filtreleme ile ilgili makale okuma sırasında, .h
dosya biraz garip kullanılarak katsayılar dizi doldurmak için kullanmak buldum:
#define N 100 // filter order
float h[N] = { #include "f1.h" }; //insert coefficients of filter
float x[N];
float y[N];
short my_FIR(short sample_data)
{
float result = 0;
for ( int i = N - 2 ; i >= 0 ; i-- )
{
x[i 1] = x[i];
y[i 1] = y[i];
}
x[0] = (float)sample_data;
for (int k = 0; k < N; k )
{
result = result x[k]*h[k];
}
y[0] = result;
return ((short)result);
}
, float h[N] = { #include "f1.h" };
Bu şekilde kullanmak için normal bir uygulama mı?
CEVAP
#include
gibi Preprocessor talimatlar sadece bazı yapıyorlarmetinikame (GCC içinde 23* *GNU belgelerine bakın). Herhangi bir yerde (yorum dizelerini dışında) ortaya çıkabilir.
Ancak, bir #include
satır #
ilk boş olmayan karakterinden olmalıdır. Kod
float h[N] = {
#include "f1.h"
};
Asıl soruya kendi satırında #include
yoktu, bu yüzden yanlış bir kod vardı.
Değilnormalpratik, ama öyleizinuygulama. Bu durumda, 10* örneğin *#include "f1.def"
den başka bir uzantı kullanarak veya 12* * ... öneririm
Senin derleyici önişlenmiş şeklinde göstermek istiyoruz. GCC gcc -C -E -Wall yoursource.c > yoursource.i
derleme ve bir editör veya bir çağrı ile bak yoursource.i
oluşturulan
Ben aslında kendi kaynak dosyada bu verilerin bir tercih. Çok isterdim bunun yerine önermek oluşturmak için kendi kendine yeten h-data.c
dosyası kullanarak örneğin bazı aracı gibi GNU awk (yani dosya h-data.c
başlamak const float h[345] = {
son };
...)
Ve eğer sürekli bir veri ise, daha iyi const float h[]
salt okunur Linux .rodata
gibi segmentinde kalabilir) bildirin. Eğer gömülü veri büyük ise, derleyici (boşuna) optimize etmek için zaman (**21 hızlı bir şekilde en iyi duruma getirme olmadan derlemek olabilir) alabilir.
Ne's/C C ?bellek durumlar dışında...
Kullanım ContentProvider olmadan Curso...
C Sabit Kullanım Açıklaması...
Neden şablonlar sadece başlık dosyasın...
&Quot;gerçek kullanım imzalı" ana...