コマンドの出力 (フラグ付き) をマクロのプリプロセッサ (例: ) として使用できますuname --kernel-name
。
#include <stdio.h>
#define version(v) #v
#define VERSION(v) version(v)
int main(void)
{
printf("Version: %s\n", VERSION(kernel_name));
return 0;
}
以下を使用してコンパイル:
gcc -Wall -pedantic -o demo demo.c -Dkernel_name=$(uname --kernel-name)
出力:
Version: Linux
#
ただし、マクロが(例uname --kernel-version
: )で始まる場合、これは失敗します。
david@debian:~$ uname --kernel-version
#1 SMP Debian 3.2.46-1+deb7u1
で始まるプリプロセッサを定義できないため#
#define SOMETHING #something /* error: stray ‘#’ in program */
コマンドの出力を引用する方法はありますか?
"#1 SMP Debian 3.2.46-1+deb7u1"
有効な入力を取得するには?