2016-09-20 8 views
-5

関数ではなくマクロを使用して別の数値に含まれる数値を抽出する方法。数値の抽出数

例擬似コード:

#define extract_number(int number, // original number 
        int pos, // start position from behind (1 == first digit) 
        int len) // count of digits 
{ 
    ... 
} 

main() { 
    int number = 0; 
    int result = 0; 

    number = 123456789; 
    result = extract_number(number, 2, 3); // result: 678 

    number = 987123456; 
    result = extract_number(number, 4, 4); // result: 7123 
} 

EDITの2016年9月21日:私は気圧のやっていることは次のようである :

int number = 123456789; 
int result = number/10 % 1000; 

@Frzn FLMSによって投稿機能を利用してバージョンは方法は、私が考えていますそれを関数で行った。コンパイル時にマクロを使用する方法はありますか?例えば

+4

質問ではなく、私のコードリクエストを明記しているので、この質問を議論の対象外としています。まず[Ask]ページをお読みください。 :) –

+0

あなたの研究/デバッグの努力をこれまでのところ表示してください。まず[Ask]ページをお読みください。 –

+0

あなたはその数の素因数を見つけることを意味しますか? – Olaf

答えて

0

:2、10 3によって置換されるべきは、ブーストを使用して次のようにこれが書き込まれる1000

によって置換されるべきです。

#include <stdio.h> 
#include <boost/preprocessor/control/while.hpp> 
#include <boost/preprocessor/arithmetic/add.hpp> 
#include <boost/preprocessor/tuple/elem.hpp> 
#include <boost/preprocessor/cat.hpp> 

#define PRED(d, state) BOOST_PP_TUPLE_ELEM(2, 0, state) 

#define OP(d, state) (BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(2, 0, state)), BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2, 1, state), 0)) 

#define pow0(n) BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_WHILE(PRED, OP, (BOOST_PP_ADD(n,1), 1))) 

int main(void) { 
    int n = pow0(2);//1000: "1" + "0"✕(n+1) 
    printf("%d\n", n); 
    return 0; 
} 
関連する問題