前提・実現したいこと
PythonとC言語のを同じコードの中にまとめて書ける言語を作っています。
PyhtonからC言語を呼び出したとき、Pythonの変数をコマンドライン引数でC言語に渡し、
C言語からPythonの変数のを使用できるようにしようとしていたのですが挙動がおかしく、コンパイラをgccからclangに変更するとうまく行きました。
なぜ、gccとclangでプログラムの挙動が違うのかを教えていただけたら幸いです。
該当のソースコード
1
1#include <fcntl.h> 2#include <sys/stat.h> 3#include <sys/types.h> 4#include <unistd.h> 5#include <string.h> 6#include <stdlib.h> 7#include <stdio.h> 8int main(int argc, char *argv[]) 9{ 10 int a; 11 float b; 12 char buffer_argv[256]; 13 for (int i = 0; i < argc; i++) 14 { 15 strcat(buffer_argv, " "); 16 strcat(buffer_argv, argv[i]); 17 } 18 sscanf(buffer_argv, " ./1 %d %f", &a, &b); 19 printf("%d", a); 20 { 21 char variables_string[256]; 22 variables_string[10] = 'a'; 23 } 24} 25
試したこと
gcc -o 1 1.c ./1 10 10
と実行すると
-21847
clang -o 1 1.c ./1 10 10
と実行すると
10
補足情報(FW/ツールのバージョンなど)
clang version 10.0.0-4ubuntu1
gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)
Ubuntu 20.04.1 LTS
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。