Saya cukup baru dalam pemrograman di C. Masalah saya adalah bahwa saya memiliki dua implementasi fungsi dan saya ingin dapat beralih di antara keduanya dengan mudah.

Saat ini saya mendefinisikan dua implementasi fungsi sebagai function_implementation1 dan function_implementation1 dalam file "funtion_implementation1.h" dan "funtion_implementation2.h" masing-masing. Untuk beralih di antara mereka, saya memiliki file berikut:

#define IMPLEMENTATION1

#ifdef IMPLEMENTATION_1
    #include "funtion_implementation1.h"
    #define myFunction function_implementation1
#endif

#ifdef IMPLEMENTATION_2
    #include "funtion_implementation2.h"
    #define myFunction function_implementation2
#endif

Untuk beralih dari satu implementasi ke implementasi lainnya, saya hanya perlu mengubah baris pertama. Pendekatan ini berhasil, dan saya puas dengan itu untuk sementara waktu, tetapi sekarang saya merasa terganggu karena saya harus sering membuka file ini. Saya memiliki file parameter.h di mana saya mendefinisikan semua parameter saya dan saya lebih suka memilih implementasi mana yang akan digunakan dalam file itu. Sayangnya, memindahkan baris pertama ke file itu tidak berhasil. Jika saya melakukan itu myFunction tidak didefinisikan.

Apa cara terbaik untuk melakukan ini?

0
Ward Beullens 18 Maret 2017, 01:30

2 jawaban

Jawaban Terbaik

Anda harus menyertakan file parameter tempat Anda menggunakan alias, makro, dll:

#include "Parameters.h"

Juga, semua file header Anda harus dimulai dengan:

#ifndef __FILE_H__
    #define __FILE_H__

// definitions go there

#endif

Ini mencegah penyertaan bersarang dari file header

1
SMFSW 17 Maret 2017, 22:34

Gunakan opsi praprosesor, khususnya opsi -D. Jika Anda ingin menggunakan IMPLEMENTATION1, saat Anda mengkompilasi file tersebut di baris perintah (atau di IDE), tambahkan -D IMPLEMENTATION1. Ini mendefinisikan makro itu. Pekerjaan yang sama untuk makro apa pun

1
Jerfov2 17 Maret 2017, 22:35