
printf()関数の括弧を二重にして、printf((~~~))とし
printf()関数の括弧を二重にして、printf((~~~))として
コンパイル/実行すると、実行時セグメンテーション違反が発生します。
コンパイル時には警告も発生しますが、このセグメンテーション違反が
なぜ起こるのか理由がよくわかりません。ご回答いただけるとありがたいです。
以下、サンプルコードと実行例です。よろしくお願いいたします。
---mytest.c----
1 #include <stdio.h>
2
3 int main(void){
4
5 //printf("test:%d", 1)ではもちろんコンパイル/実行に成功する。
6 printf(("test:%d", 1));
7 return 0;
8 }
【コンパイル/実行結果/gccバージョン】
#gcc main.c
main.c:6:警告:passing argument 1 of printf makes pointer from integer without a cast
#./a.out
セグメンテーション違反です
# gcc --version
gcc (GCC) 4.1.2 20070925 (Red Hat 4.1.2-27)
・
・
投稿日時 - 2010-09-07 22:35:45
このQ&Aは役に立ちましたか?
7人が「このQ&Aが役に立った」と投票しています