ずに呼び出すことができます。#defineマクロFunc
、および10は括弧のない引数になります。Cプリプロセッサ:この場合</p> <pre><code>void Func(int x) { printf("%d",x); } #define func Func x //or something int main() { func 10; //<---- remove parenthesis } </code></pre><p>、<code>func</code>は実関数を指します。私はそれがこのように振る舞うマクロを書き込むことができる場合に思っていた括弧
私はCでnew
オペレータに似た何かを達成しようとしている++けどC.
例に:この場合
class Base* b = new(Base);
、class
はstruct
のマクロで、new
が関数であります関数ポインタをとる関数Base
は、struct Base
にメモリを割り当てる関数です。
私はこのような何かにコードを書き換えるしたい:私はあなたが何を行うことができるとは思わない、私はマクロを考え出すことができる場合に可能となります
class Base* b = new Base;
:)
は、マクロのパラメータは、括弧内にすべきではありませんか? – Matso
まあ、それらの "関数マクロ"は、 '#define func(x)Func(x)'のような通常の関数構文を持っています。呼び出しは通常の関数のようになります。 'func(10)'。それはあなたが欲しいものですか? –
@エーザンそれはC++の質問ではなく、その純粋なCであり、プリプロセッサのメイトと何かを持っています – Mamma